在没有看到您的完整查询的情况下,我建议您将 a 添加row_number()
到您的 CTE 中,然后根据行号旋转数据:
;with cte as
(
select *, -- replace * with your column names
ROW_NUMBER() over(partition by colName order by colName) rn
from yourdata
)
select [1] as colName1,
[2] as colName2,
[3] as colName3,
[4] as colName4
from cte
pivot
(
max(colName)
for rn in ([1], [2], [3], [4])
) piv;
如果您不想使用 PIVOT 函数,那么您也可以使用带有 CASE 表达式的聚合函数:
;with cte as
(
select *, -- replace * with your column names
ROW_NUMBER() over(partition by colName order by colName) rn
from yourdata
)
select
MAX(case when rn = 1 then colName end) colName1,
MAX(case when rn = 2 then colName end) colName2,
MAX(case when rn = 3 then colName end) colName3,
MAX(case when rn = 4 then colName end) colName4
from cte
-- group by other columns in select if needed