I have the following bit of code

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

which works perfectly but generates some NULL values.

I know that I need to wrap an ISNULL around the @columns but can anyone give me the right syntax - whatever I try either generates an error or seems to have no effect.

有帮助吗?

解决方案 2

how about adding additional condition?

WHERE PERIOD IS NOT NULL

其他提示

COALESCE returns the first non-null value, so it's acting as ISNULL in your case. So your query can return null only if PERIOD column is null. You can either filter such values out:

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  

or use ISNULL on PERIOD:

SELECT @columns = COALESCE(@columns + ', ','') + ISNULL(QUOTENAME(PERIOD), '')
FROM (SELECT DISTINCT PERIOD FROM @p_l_summary) AS b
ORDER BY b.PERIOD  
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top