我有以下代码
SELECT @columns = COALESCE(@columns + ', ','') + QUOTENAME(PERIOD)
FROM (SELECT DISTINCT PERIOD FROM @p_l_summary) AS b
ORDER BY b.PERIOD
它工作得很好,但会产生一些 NULL 值。
我知道我需要在@columns 周围包裹一个 ISNULL,但任何人都可以给我正确的语法 - 无论我尝试什么都会产生错误或似乎没有效果。
COALESCE
返回第一个非空值,因此它的作用与ISNULL
您的情况一样。因此,仅当 PERIOD 列为 null 时,您的查询才能返回 null。您可以过滤掉这些值:
SELECT @columns = COALESCE(@columns + ', ','') + QUOTENAME(PERIOD)
FROM (SELECT DISTINCT PERIOD FROM @p_l_summary WHERE PERIOD IS NOT NULL) AS b
ORDER BY b.PERIOD
或ISNULL
在 PERIOD 上使用:
SELECT @columns = COALESCE(@columns + ', ','') + ISNULL(QUOTENAME(PERIOD), '')
FROM (SELECT DISTINCT PERIOD FROM @p_l_summary) AS b
ORDER BY b.PERIOD
添加附加条件怎么样?
WHERE PERIOD IS NOT NULL