如果一列为空则SQL返回空(与COALESCE()相反)

Ric*_*uez 9 sql null coalesce

提前,我想感谢你的帮助.这是一个很棒的社区,我在这里找到了许多编程答案.

我有一个包含多列的表,其中5列包含日期或null.

我想编写一个sql查询,它基本上将5列合并为1列,条件是如果五列中的一列包含"NULL"值,则返回的值为null.基本上与返回第一个非null的合并条件相反,我想返回第一个null.如果没有为null,则返回5个日期中最大的日期将是最佳的,但是我可以决定返回5个日期中的任何一个.

    C1         C2          C3        C4        C5
    --         --          --        --        --
 1/1/1991   1/1/1991    1/1/1991  1/1/1991  2/2/1992
   NULL     1/1/1991    1/1/1991  1/1/1991  1/1/1991
Run Code Online (Sandbox Code Playgroud)

查询返回:

    C1
    --
 2/2/1992
   NULL
Run Code Online (Sandbox Code Playgroud)

非常感谢你.

(服务器是MSSQL2008)

Axn*_*Axn 2

无需过多思考:

SELECT
  CASE WHEN c1 is null or c2 is null or c3 is null or c4 is null or c5 is null
       THEN null
       ELSE c1
  END
FROM mytable
Run Code Online (Sandbox Code Playgroud)

我的编辑如下:

CASE 
 WHEN (c1 >= c2 AND c1 >= c3) THEN c1
 WHEN (c2 >= c1 AND c2 >= c3) THEN c2
 WHEN (c3 >= c1 AND c3 >= c2) THEN c3
END
Run Code Online (Sandbox Code Playgroud)