根据分组因子连接多行

时间:2015-05-02 09:50:22

标签: sql sql-server

我正在尝试创建一个SQL查询,该查询将根据分组因素将多个行连接在一起。希望有人可以提供帮助。

示例数据:

Code

001A

001B

001C

002A

002B

002C

002D

002E

我希望查询执行Where Code LIKE '001%'然后左连接所有行。 导致:

Code1   Code2   Code3

001A    001B    001C

在数据中,例如Where Code Like '002%'上的代码数量会有差异:

Code1   Code2   Code3   Code4   Code5

002A    002B    002C    002D    002E

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您可以使用pivot和一些动态查询执行此操作:

declare @cols varchar(max), @query varchar(max)

set @cols = stuff((select distinct ',' + quotename(code)
                   from t
                   where code like '002%'
                   for xml path(''), type).value('.', 'varchar(max)') 
                  ,1,1,'')

set @query = 'select * from (select code from t)t
              pivot (max(code) for code in (' + @cols + ')) p'
exec(@query)

小提琴http://sqlfiddle.com/#!6/4da68/10