2011-02-12 95 views
0

可能重复:
How to return multiple values in one column (T-SQL)?
Simulating group_concat MySQL function in MS SQL Server 2005?压扁SQL服务器INNER JOIN结果

嗨,

假设我有2个表,我加入,我做了INNER使用关键字段加入。

架构:

TABLE #a的KF INT

TABLE #b的KF INT,数据VARCHAR(5)

现在,如果#a的具有单个行具有值如1和#b具有多个具有相同密钥1的行

  1. 1 DBD
  2. 1 DBE
  3. 1 HDG

现在,当我做加盟的不是得到3行,是否有可能得到一个列有以逗号分隔的方式将数据值类似

1 DBD,DBE,HDG

回答

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 
版本