我正在尝试使用XML Path来运行SQL Concatenation但我遇到了一些问题。我有一个表用作我想要连接的值的参考表。我在引用表中有3列(M.PROD,S.PROD和& REF NUMB)。
我有主表,其中m.prod和s.prod用于匹配Ref Numb值的引用表。我想要做的是根据主表中选择的内容连接Ref Numb值。我正在寻找的输出是:
我使用以下查询:
SELECT DISTINCT P.PRODUCT,
(STUFF((SELECT DISTINCT ',' + P1.REFNUMB AS [text()]
FROM PRODUCT P1
WHERE P1.PRODUCT = P.PRODUCT
FOR XML PATH('')), 1, 1, ''))
FROM PRODUCT P
这给了我输出:
但是,有时候所有s.prod都不在主表中。因此,我使用此查询:
SELECT DISTINCT P.PRODUCT,
(STUFF((SELECT DISTINCT ',' + P1.REFNUMB AS [text()]
FROM PRODUCT P1
WHERE P1.PRODUCT = P.PRODUCT AND P1.SUBID = P.SUBID
FOR XML PATH('')), 1, 1, ''))
FROM PRODUCT P
此查询为我生成以下输出:
在这些情况下我需要的输出是:
非常感谢任何解决方案,谢谢。
答案 0 :(得分:1)
我不确定我是否理解你的问题,但试试这个:
SELECT DISTINCT P.PRODUCT,
(STUFF((SELECT DISTINCT ',' + P1.REFNUMB AS [text()]
FROM PRODUCT P1
WHERE P1.PRODUCT = P.PRODUCT
AND (P1.SUBID = P.SUBID OR P1.SUBID IS NULL AND P.SUBID IS NULL)
FOR XML PATH('')), 1, 1, ''))
FROM PRODUCT P