我正在尝试使用 XML 路径来运行 SQL 连接,但我遇到了一些问题。我有一个表用作要连接的值的参考表。参考表中有 3 列(M.PROD、S.PROD 和 REF NUMB)。
- M.PROD=====>S.PROD======>参考麻木
- 1===========> _ ===========>981024583
- 2===========> _ ===========>981024719
- 3===========> A ===========>981024605
- 3===========> B ===========>981024669
- 4===========> A ===========>981024688
- 4===========> B ===========>981024706
- 4===========> C ===========>981024723
- 5===========> _ ===========>981024742
- 6===========> _ ===========>981024742
我有主表,其中 m.prod 和 s.prod 用于匹配 Ref Numb 值的参考表。我想要做的是根据主表中选择的内容连接 Ref Numb 值。我正在寻找的输出是这样的:
- M.Prod======>参考麻木
- 1===========>981024583
- 2===========>981024719
- 3===========>981024605、981024669
- 4===========>981024688、981024706、981024723
- 5===========>981024742
- 6===========>981024742
我正在使用以下查询:
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
这给了我以下输出:
- M.Prod======>参考麻木
- 1===========>981024583
- 2===========>981024719
- 3===========>981024605、981024669
- 4===========>981024688、981024706、981024723
- 5===========>981024742
- 6===========>981024742
但是,有时所有 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
此查询为我生成以下输出:
- M.Prod======>参考麻木
- 1===========>NULL
- 2============>NULL
- 3===========>981024605
- 3===========>981024669
- 4===========>981024688
- 4===========>981024723
- 5===========>NULL
- 6===========>NULL
在这些情况下我需要的输出是:
- M.Prod======>参考麻木
- 1===========>981024583
- 2===========>981024719
- 3===========>981024605、981024669
- 4===========>981024688、981024723
- 5===========>981024742
- 6===========>981024742
对此的任何解决方案将不胜感激,谢谢。