展平 SQL 服务器 INNER JOIN 结果 [重复]

Posted

技术标签:

【中文标题】展平 SQL 服务器 INNER JOIN 结果 [重复]【英文标题】:Flattening SQL server INNER JOIN result [duplicate] 【发布时间】:2011-02-12 20:31:56 【问题描述】:

可能的重复: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

TABLE #b kf int, data varchar(5)

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

    1 DBD 1 个 DBE 1 块硬盘

现在,当我进行联接而不是获取 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

【讨论】:

以上是关于展平 SQL 服务器 INNER JOIN 结果 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何让 SQL INNER JOIN 接受空结果

SQL中inner join,outer join和cross join的区别

SQL中inner join,outer join和cross join的区别

mysql的unionleft join right join inner join和视图学习

SQL语句中LEFT JOIN和RIGHT JOIN 以及INNER JOIN的区别

SQL中LEFT JOIN 和 inner join 的区别