我有一个场景,我想要csv列表中两个表的发票号码。我可以使用Stuff完成此操作,如下所示:
SELECT
sopnumbe
,custname
,Invoices =
STUFF((SELECT DISTINCT ', '+ RTRIM(a.sopnumbe)+', '+ RTRIM(B.sopnumbe)
FROM
SOP10100 a
fULL OUTER JOIN
SOP30200 B
ON a.ORIGNUMB =B.ORIGNUMB
WHERE a.ORIGNUMB =@ordernumb
FOR XML PATH('')) , 1 , 1 , '' )
FROM SOP10100
WHERE
SOPNUMBE = @ordernumb
上述查询会产生正确的结果,但列表中的重复发票号除外。有没有其他方法可以实现这个目标?
if the result of simple outer join query is:
INV1527157 INV1523836
INV1527157 INV1526475
东西查询的结果:
K08081383206 BACHELOR CONTROLS INC INV1527157, INV1523836, INV1527157, INV1526475
INV1527157重复,我想摆脱重复。
答案 0 :(得分:1)
您可能希望UNION
和A
一起尝试B
结果,而不是完整的外部联接:
SELECT ', '+ RTRIM(sopnumbe)
FROM (SELECT sopnumbe FROM SOP10100 a WHERE a.ORIGNUMB = @ordernumb
UNION
SELECT sopnumbe FROM SOP30200 b WHERE b.ORIGNUMB = @ordernumb
) RESULT
这将仅返回两个子查询的不同结果。