0

我有以下代码

SELECT @columns = COALESCE(@columns + ', ','') + QUOTENAME(PERIOD)
FROM (SELECT DISTINCT PERIOD FROM @p_l_summary) AS b
ORDER BY b.PERIOD    

它工作得很好,但会产生一些 NULL 值。

我知道我需要在@columns 周围包裹一个 ISNULL,但任何人都可以给我正确的语法 - 无论我尝试什么都会产生错误或似乎没有效果。

4

2 回答 2

2

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  
于 2013-05-16T09:53:53.270 回答
1

添加附加条件怎么样?

WHERE PERIOD IS NOT NULL
于 2013-05-16T09:41:34.243 回答