我有一个包含两列的表格。
Id Value
1 A
1 B
1 C
我想得到如下结果,
Id Value1 Value2 value3
1 A B C
我如何在SQL Server中完成此操作。
答案 0 :(得分:1)
这是一个支点,但您没有用于旋转的列。 row_number()
可以提供。我通常会使用条件聚合。
select id,
max(case when seqnum = 1 then value end) as value1,
max(case when seqnum = 2 then value end) as value2,
max(case when seqnum = 3 then value end) as value3
from (select t.*,
row_number() over (partition by id order by (select null)) as seqnum
from t
) t
group by id;
请注意,SQL表表示无序集。因此,没有关于排序的信息,值可以按任何顺序排列。如果列确实指定了排序,请将其包含在order by
而不是select null
中。