如何将单个列转换为单行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将单个列转换为单行相关的知识,希望对你有一定的参考价值。

我似乎无法找到一个很好的例子,但是假设我有一个看起来如下的结果表......

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;
另一答案

您可以使用条件聚合:

select max(case when seqnum = 1 then result end) as result1,
       max(case when seqnum = 2 then result end) as result2,
       max(case when seqnum = 3 then result end) as result3
from (select t.*, row_number() over (order by result) as seqnum
      from t
     ) t;

关键是使用row_number()枚举值然后使用它。我更喜欢条件聚合,但pivot也是如此。

以上是关于如何将单个列转换为单行的主要内容,如果未能解决你的问题,请参考以下文章

将单行转换为多行

如何(取消)将多个指标转换为单个列?

如何将单个表格行转换为两列?

将 Numpy 数组按列转换为 Pandas DataFrame(作为单行)

Python:如何将 Pandas Dataframe 行值转换为单个列?

如何在不丢失科学记数法的情况下将列转换为单个管道分隔的列?