平坦化SQL server内部联接结果

平坦化SQL server内部联接结果,sql,sql-server-2008,Sql,Sql Server 2008,可能的重复项: 嗨 假设我有两个表,我在其中使用键字段进行内部连接 模式: 表a kf int 表#b kf int,数据varchar(5) 现在,如果#a有一个值为1的单行,而#b有多个值为1的键的行 1 DBD 1弱势商业企业 1 HDG 现在,当我做一个连接而不是得到3行时,是否有可能得到一行数据值以逗号分隔的方式,如 1 DBD、DBE、HDG这里有一个使用CTE和XML路径(“”) 下面是一个使用CTE和XML路径(“”) ;with cte as ( select

可能的重复项:

假设我有两个表,我在其中使用键字段进行内部连接

模式:

表a kf int

表#b kf int,数据varchar(5)

现在,如果#a有一个值为1的单行,而#b有多个值为1的键的行

  • 1 DBD
  • 1弱势商业企业
  • 1 HDG
  • 现在,当我做一个连接而不是得到3行时,是否有可能得到一行数据值以逗号分隔的方式,如


    1 DBD、DBE、HDG

    这里有一个使用
    CTE
    XML路径(“”)


    下面是一个使用
    CTE
    XML路径(“”)

    ;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