我似乎找不到一个像样的例子,但假设我有一个如下所示的结果表......
result
100
200
400
假设行数始终相同(在本例中为 n=3),现在我想转置它并能够根据需要为每一列命名...
result1 result2 result3
100 200 400
我查看了 pivot
函数,但我似乎无法让它工作...
select * from total_results pivot(result for result in (result1, result2, result3))
但是这给我错误。我怎样才能完成我想要的,我似乎找不到一个我可以理解的简单示例,因为 pivot
被证明很难使用。
最佳答案
你想要 row_number()
条件聚合:
select max(case when seq = 1 then result end) as result1,
max(case when seq = 2 then result end) as result2,
max(case when seq = 3 then result end) as result3
from (select t.*,
row_number() over (order by result) as seq
from table t
) t;
关于sql - 如何将单列转置为单行行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54830104/