STUFF函数用于连接值

时间:2017-11-16 04:58:23

标签: sql-server for-xml-path

STUFF功能& FOR XML PATH之前已经讨论过了。由于T1和T2之间存在多对多的关系,因此我的案例略有参与

表T1(t1id,t1name)T2(t2id,t2name) 假设还有一个中间链接表F(t1id,t2id)

我正在寻找的输出如下:

T1id1 - > T1中所有ID的t2name1,t2name3,t2name6

这可以在一个查询中完成吗?

由于 阿南德

我添加了一些示例数据

表地理

Id  Name
---------------
1   All
2   APR
3   EMEA
4   Pan Asia
5   Japan
6   China
7   European
8   US

表分析员

Id   Name
-------------
1    Tom
2    Dick
3    Harry
4    Peter
5    Mary
6    Amy
7    Susie

这两个表是N-> M

我正在寻找的输出是

Analyst.Id   Analyst.Name  Geography.Name
------------------------------------------
1            Tom           EMEA, China
2            Dick          APR, US, China
....
....  

1 个答案:

答案 0 :(得分:0)

是。像这样

SELECT T1.t1id, STUFF(t2.name, 1, 1, '')
FROM   T1
       CROSS APPLY
       (
           SELECT ',' + T2.name
           FROM   T2
           WHERE  T2.t2id = T1.t1id
           FOR XML PATH ('')
       ) t2 (name)