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最初のnull以外の値を返すので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  

またはISNULLPERIOD で使用:

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 に答える