SQL查询基于列值

时间:2018-09-03 19:30:18

标签: sql sql-server tsql

是否有一个SQL查询根据其他列的值更改条件?

我想执行以下查询

select colA,colB, colC
from TABLED
where colA > 10
  and (if colC == A then colB = 'C' else colB = 'B')

如果这是有道理的,那么如果我们colC == A

select colA, colB, colC
from TABLED
where colA > 10 and colB = 'C'

否则我们会

select colA,colB,colC
from TABLED
where colA > 10 and colB = 'B'

2 个答案:

答案 0 :(得分:1)

您可以使用条件逻辑来表达这一点。不需要case

select colA, colB, colC
from TABLED
where colA > 10 and
      ( (colC = A and colB = 'C') or
        (colC <> A and colB = 'B')
      );

这没有考虑到colC可能是NULL。如果需要的话,很容易将其合并到查询中。

答案 1 :(得分:-3)

如果您要基于条件计算值,可以使用 CASE WHEN

SELECT
    colA,
    colB,
    (CASE
        WHEN CONDITION1 THEN VALUE1
        WHEN CONDITION2 THEN VALUE2
        ...
        ELSE VALUEN
    END) AS colC    
FROM table
    WHERE colA > 10