用COALESCE(SQL)重写CASE

时间:2018-09-25 07:34:51

标签: sql sql-server

我的sql脚本中有使用CASE编写的代码

在这里

CASE WHEN b.ContactId IS NULL THEN a.ContactId ELSE b.ContactId END AS ContactId,
CASE WHEN b.LastActivityDate IS NULL THEN a.LastActivityDate ELSE b.LastActivityDate END AS LastActivityDate,
CASE WHEN b.ActivityType IS NULL THEN a.ActivityType ELSE b.ActivityType END AS ActivityType,
CASE WHEN b.ActionPersonName IS NULL THEN a.ActionPersonName ELSE b.ActionPersonName END AS ActionPersonName

我想用COALESCE重写它。我该如何正确执行此操作?

2 个答案:

答案 0 :(得分:3)

您可以尝试让b的列成为第一个参数,a的列 作为第二个参数。

COALESCE

  

按顺序评估参数,并返回最初不评估为NULL的第一个表达式的当前值

COALESCE(b.ContactId,a.ContactId) AS ContactId,
COALESCE(b.LastActivityDate,a.LastActivityDate) AS LastActivityDate,
COALESCE(b.ActivityType,a.ActivityType) AS ActivityType,
COALESCE(b.ActionPersonName,a.ActionPersonName) AS ActionPersonName

答案 1 :(得分:1)

第一个空检查列将成为col1 col2 col3 col4 1 2 3 2 2 3 NaN 2 3 4 NaN 3 2 NaN NaN 2 0 2 NaN 2 中的第一个参数

COALESCE