如何在 SQL Server 的 Where 子句中使用 case 语句
Posted
技术标签:
【中文标题】如何在 SQL Server 的 Where 子句中使用 case 语句【英文标题】:How to use case Statement in Where Clause in SQLserver 【发布时间】:2014-02-27 21:05:35 【问题描述】:我需要我的查询来检查基于客户状态的某些条件
样本数据:
Table A A_ID Customer_ID Department Feild Case1 Case2 1 101 X A FX1 Zx1 2 102 Y B FX2 ZX2 3 103 Z C FX3 ZX3
Table B ----
B_ID Customer_ID Status Feild Match_Feild Case1 Case2
1 101 C Null A FX1 ZX1
2 101 Manual A AX FX0 ZX0
在我的情况下,如果状态是手动的,那么在 where 条件下我需要单独与 Feild 检查 否则我需要检查其他两个条件
在哪里 当 Status ='Manual' 然后 a.feild = b.feild 的情况 别的 a.Case1 = b.Case1 和 a.案例2 = B.案例2 结束。
我不知道如何把它放在我的查询中
【问题讨论】:
NULL 是什么意思?是否要剩余记录Feild
应该是 Field
吗?
Status,Case1和Case2,哪些列可以为空?
【参考方案1】:
where (Status = 'Manual' and a.feild = b.feild )
OR
(Status<> 'Manual' AND a.Case1 = b.Case1 and a.Case2 = B.case2)
【讨论】:
OR 1=1 将始终将条件视为成功。以上是关于如何在 SQL Server 的 Where 子句中使用 case 语句的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SQL Server 2008 的 where 子句中仅比较日期并忽略时间
如何在 SQL Server where 子句中使用表值函数