我的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重写它。我该如何正确执行此操作?
答案 0 :(得分:3)
您可以尝试让b
的列成为第一个参数,a
的列
作为第二个参数。
按顺序评估参数,并返回最初不评估为
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