2012-02-16 4 views
2

제가변환 칼럼

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

내가 요컨대

1 Abc Def 
2 Ghi Jkl Mno 

내가 모두 territoryID 기록을 필요로하는 순서로 출력을 얻기 위해 필요한 테이블 구조를 갖는다 여러 열 (동적)에서 1 행의 EmployeeID에 대해. 기본적으로 열은 행

어떤 도움이

감사를 감사하고 감사합니다 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 

한 직원이 처리 할 수있는 최대 영토 수만큼 번호를 입력해야합니다. 미리 알 수없는 경우 쿼리를 동적으로 작성해야합니다.

관련 문제