如何在CASE语句中的一个或多个条件下分别获取数据

时间:2018-10-03 14:47:08

标签: sql sql-server

我有一个像这样的桌子,上面有很多ID。

enter image description here

在表中我有ID。每个ID都有一个值和该值的对应日期。我需要分别获取

的ID
  1. 如果value不为null,则其对应的日期也应不为null
  2. 如果value为null,则无需检查其对应日期

因此,在查询中,如果我通过1作为参数,将显示结果表Id(101,&104),如果我通过2作为参数,将一起显示Id(102&103)

1 个答案:

答案 0 :(得分:0)

条件:

  
      
  1. 如果value不为null,则其对应的日期也应不为null
  2.   
  3. 如果value为null,则无需检查其对应日期
  4.   

可以写为:

(value1 IS NULL OR date1 IS NOT NULL)

为每对创建条件并使用AND进行组合:

SELECT *
FROM table_with_lots_of_ids
WHERE
(value1 IS NULL OR date1 IS NOT NULL) AND
(value2 IS NULL OR date2 IS NOT NULL) AND
(value3 IS NULL OR date3 IS NOT NULL) AND
(value4 IS NULL OR date4 IS NOT NULL)

上面将选择行号101和104。将NOT (...)内的where子句包装起来,得到行号102和103。