CASE语句在级联字段中重新处理空值

时间:2016-06-24 13:19:47

标签: sql sql-server case

我正在尝试构建一个CASE语句来处理下表。

如果Service1为NULL,我希望Service2中的值替换它。如果Service1和Service2为NULL,我希望Service3中的值替换它等等...等等......

我想在每个字段上重复此操作,以便它们尽可能地压缩。

我设法构建一个CASE语句,但是我有重复的值,因为值从Service2移动到Service1但仍保留在Service2中。我需要根据NULL值移动所有值,因此相同的值保留在行上,但它们尽可能在列上进行压缩。

enter image description here

1 个答案:

答案 0 :(得分:3)

COALESCE正是您所寻找的:

SELECT COALESCE(Service1, Service2, Service3, Service4, Service5, Service6)
  FROM ...

COALESCE对于这样的CASE表达式来说是非常方便的缩写:

COALESCE(Service1, Service2)

CASE WHEN Service1 IS NOT NULL THEN Service1
     ELSE Service2
END

如果您有两个以上的参数,COALESCE非常方便。

还值得查看其他null相关case缩写: