我有一个表格结构,其中数据按以下顺序排列
EmployeeID TerritoryID
1 Abc
1 Def
2 Ghi
2 Jkl
2 Mno
我需要按以下顺序获取输出
1 Abc Def
2 Ghi Jkl Mno
简而言之,我需要在多列(动态)的1行中为EmployeeID的所有territoryID记录。基本上,列需要转换为行
感谢任何帮助
谢谢和问候 Sanjai Palliyil
答案 0 :(得分:4)
您可以使用pivot和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
您需要包含与一名员工所涵盖的最大区域数一样多的数字。如果您事先无法知道,则需要动态构建查询。