UPDATE #Product_Comments
SET #Product_Comments.Comments = (
SELECT COALESCE(STRING_AGG(p.Label, ', '), '') + ' '
from (
select distinct Label, Product_ID
from #TEMPORARYTB
where Product_ID = pc.Product_id
) as p
GROUP BY p.Product_ID
) + pc.Comments from #Product_Comments pc
JOIN Product_Property p ON p.Product_ID = pc.Product_id
我以前COALESCE()
有的时候用过STRING_AGG(p.Label, ', ')
,我还在NULL
内部评论。如果我在更新前打印 Product_Comments,我看不到任何NULL
内部评论。
SELECT *, '4' AS debug FROM #Product_Comments
我是这样打印的。所以,当我这样做时
SELECT *, '3' AS debug FROM #Product_Comments
我没有看到任何NULL
,这很奇怪。这意味着它COALESCE
无法以某种方式工作。我怎样才能解决这个问题?
除了 Akina 所说的关于您的子查询可能返回一个空行集,这将产生一个
NULL
. 您还转身并将 SELECT 的结果NULL
与) + pc.Comments from #Product_Comments pc
.如果连接的任何部分包含 a
NULL
,则整个结果将变为NULL
。COALESCE
您需要在最后一个引用周围附加一个pc.Comments
.试试这个,看看它是否有效。它非常简陋,但我只有几分钟的时间来输入它。它应该为您指明正确的方向。
当然,我也会问您是否真的需要首先将评论连接回自身?