展平SQL Server INNER JOIN结果

时间:2011-02-12 20:31:57

标签: sql sql-server-2008

  

可能重复:
  How to return multiple values in one column (T-SQL)?
  Simulating group_concat MySQL function in MS SQL Server 2005?

您好,

假设我有2个表,我加入其中,我使用关键字段进行INNER JOIN。

架构:

  

表#a kf int

     

表#b kf int,data varchar(5)

现在,如果#a有一行,其值为1,而#b有多行,其中的键1与

相同
  1. 1 DBD
  2. 1 DBE
  3. 1 HDG
  4. 现在当我进行连接而不是获得3行时,是否可以以逗号分隔的方式获取一行数据值,如

    1 DBD,DBE,HDG

1 个答案:

答案 0 :(得分:1)

以下是使用CTEXML PATH('')

的版本
;with cte as
(
  select
    kf,
    (select data+','
     from #b as b2
     where b1.kf = b2.kf
     for xml path('')) as data
  from #b b1 
  group by kf
)
select
  a.kf, 
  left(b.data, len(b.data)-1) as data
from #a as a
  inner join cte as b
    on a.kf = b.kf