2015-05-02 2 views
0

Я пытаюсь создать 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

https://technet.microsoft.com/en-us/library/ms177410(v=sql.105) .aspx – PeterRing

ответ

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

+0

Это похоже на то, что было после, однако как мне изменить это, чтобы он смотрел только на столбец «code» и не собирал какие-либо другие столбцы, которые могут быть на столе? Благодарю. – Revokez

+0

@Revokez, я отредактировал ответ –

+0

@Girogi Это отлично, большое спасибо за вашу помощь! – Revokez