有人可以告诉我为什么COALESCE正在开发第一个SELECT而不是其他两个?我仍然在后两个语句中获得NULL值。
(SELECT COALESCE(DEFax, NULL, '') FROM Debtor d WHERE d.DEIsPrimary = 1 AND d.CApKey = c.CApKey) AS FaxNumberOne,
(SELECT COALESCE(DEFax, NULL, '') FROM (SELECT ROW_NUMBER() OVER (ORDER BY DEpKey ASC)
AS rownumber, DEFax FROM Debtor d WHERE d.CApKey = c.CApKey AND d.DEIsPrimary <> 1)
AS foo WHERE rownumber = 1) AS FaxNumberTwo,
(SELECT COALESCE(DEFax, NULL, '') FROM (SELECT ROW_NUMBER() OVER (ORDER BY DEpKey ASC)
AS rownumber, DEFax FROM Debtor d WHERE d.CApKey = c.CApKey AND d.DEIsPrimary <> 1)
AS foo WHERE rownumber = 2) AS FaxNumberThree
谢谢!
样本数据和期望的结果确实会有所帮助。
但是标量子查询是一个返回一列和零行或一行的子查询。如果它返回零行,那么无论NULL
中的表达式如何,该值都是SELECT
。换句话说,COALESCE()
需要走出去,如下所示:
coalesce( (select . . . . ),
''
)
在NULL
名单中包括coalesce()
不是一个好习惯。这是不必要的和误导性的 - 并且总是被忽视。