Sql Query:如何解决这个查询问题?

时间:2012-02-03 09:15:13

标签: sql sql-server

我有两张桌子:

表1

  

Key,CenterId,Value

     

01中心A 10

     

02中心B 100

     

03中心C 50

表2

Center,  SubCenter, A-Field,  B-Field
Center A   Sub 1      ...     ...
Center A   Sub 2
Center A   Sub 3      ...     ...

我需要获得每个中心一行(表1中的一行)和所有子中心但没有重复行...所以我的最后结果必须是:

查询结果

 Center,  Value, List-of-SubCenter
 Center A,  10,   Sub1 Sub2 Sub 3
 Center B, 100,   Sub4 ...  Sub N

如何在Sql(特别是SQL-SERVER)中执行此操作?

谢谢

1 个答案:

答案 0 :(得分:1)

这适用于SQL Server 2005及更高版本

SELECT t1.centerid, t1.value, LEFT(el.sublist, LEN(el.sublist)-1) AS subcenters 
FROM Table1 t1
CROSS APPLY (SELECT t2.subcenter + ',' AS [text()]
             FROM Table2 t2
             WHERE t2.center = t1.centerid 
             FOR XML PATH(''))el(sublist)