2012-02-16 5 views
2

У меня есть структура таблицы, где данные поступают в следующем порядкеПреобразования столбцов в строки

EmployeeID  TerritoryID 
    1    Abc 
    1    Def 
    2    Ghi 
    2    Jkl 
    2    Mno 

мне нужно, чтобы получить выход в следующем порядке

1 Abc Def 
2 Ghi Jkl Mno 

Короче мне нужны все записи territoryID для EmployeeID в 1 строке в нескольких столбцах (динамический). В основном столбцы должны быть преобразованы в строки

Любая помощь ценится

Спасибо и наилучшими пожеланиями Sanjai Palliyil

ответ

4

Вы могли бы использовать запрос с помощью шарнира и row_number(). Что-то вроде этого.

declare @T table 
(
    EmployeeID int, 
    TerritoryID char(3) 
) 

insert into @T values 
(1, 'Abc'), 
(1, 'Def'), 
(2, 'Ghi'), 
(2, 'Jkl'), 
(2, 'Mno') 

select EmployeeID, [1], [2], [3] 
from 
    (
    select EmployeeID, 
      TerritoryID, 
      row_number() over(partition by EmployeeID order by TerritoryID) as rn 
    from @T 
) as T 
pivot 
(
    min(TerritoryID) for rn in ([1], [2], [3]) 
) as P 

Необходимо указать столько чисел, сколько максимальное количество территорий, на которые распространяется один сотрудник. Если вы не можете заранее знать, что вам нужно построить запрос динамически.

Смежные вопросы