条件选择语句

May*_*you 2 sql sql-server select sql-server-2005

考虑下表(快照):

在此输入图像描述

我想编写一个查询来从表中选择行

  • 7列值中至少有4个(VAL,EQ,EFF,...,SY)不为NULL.

知道怎么做吗?

jod*_*ods 5

这里没什么好看的,只计算每行非空的数量:

SELECT *
FROM Table1
WHERE
  IIF(VAL IS NULL, 0, 1) +
  IIF(EQ IS NULL, 0, 1) + 
  IIF(EFF IS NULL, 0, 1) + 
  IIF(SIZE IS NULL, 0, 1) + 
  IIF(FSCR IS NULL, 0, 1) +
  IIF(MSCR IS NULL, 0, 1) + 
  IIF(SY IS NULL, 0, 1) >= 4
Run Code Online (Sandbox Code Playgroud)

刚刚注意到你标记了sql-server-2005.IIF是sql server 2012,但你可以替代CASE WHEN VAL IS NULL THEN 1 ELSE 0 END.