使用多于1个数据表将列值连接成字符串

时间:2016-03-09 14:12:57

标签: tsql

我希望将1列和分组中的值连接起来。我已经看到了很多这方面的解决方案(例如使用FOR XML PATH('')),但我没有遇到过使用超过1个表的解决方案。我需要第二个表来过滤掉一些条目,但我无法弄清楚如何去做。 我的数据如下:

  SONo        PartNo
1 A04000.1    M41000M
2 A04000.1    M52000M
3 A04001.1    V31255
4 A04001.1    V32895

我希望它看起来像这样:

  SONo          PartNo
1 A04000.1     M41000M, M52000M
2 A04001.1      V31255, V32895

我的查询如下:

SELECT     SUBSTRING(Table1.ID, 5, 10) AS SONo, Table1.PartNo
FROM         Table1 INNER JOIN
                  Table2 ON Table1.PartNo = Table2.PartNo
WHERE     (Table2.StoreNo = '13')
ORDER BY SONo

非常感谢任何帮助。

感谢。

1 个答案:

答案 0 :(得分:0)

好的,我明白了。我将查询保存为视图,然后使用FOR XML PATH (''),如果渲染速度有点慢,则可以使用它。 这是我的新查询:

SELECT t1.SalesOrderNo,
    STUFF((SELECT ', '+t2.PartNo 
             FROM dbo.SOCuttersUsed t2 
            WHERE t1.SalesOrderNo = t2.SalesOrderNo FOR XML PATH('')),1,1,'') AS PartNo
FROM dbo.SOCuttersUsed t1
GROUP BY t1.SalesOrderNo
 ORDER BY SalesOrderNo