【问题标题】:How to use case Statement in Where Clause in SQLserver如何在 SQL Server 的 Where 子句中使用 case 语句
【发布时间】: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,哪些列可以为空?

标签: sql sql-server


【解决方案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 将始终将条件视为成功。
猜你喜欢
  • 2021-08-09
  • 1970-01-01
  • 1970-01-01
  • 2013-06-30
  • 2013-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多