首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将单列转置为单行

如何将单列转置为单行
EN

Stack Overflow用户
提问于 2019-02-22 23:16:49
回答 2查看 35关注 0票数 1

我似乎找不到一个像样的例子,但假设我有一个结果表,如下所示……

代码语言:javascript
复制
result

100
200
400

假设行数总是相同的(在本例中是n=3),现在我想转置它,并能够随心所欲地命名每一列……

代码语言:javascript
复制
result1   result2   result3

100       200       400

我检查了pivot函数,但似乎无法让它工作……

代码语言:javascript
复制
select * from total_results pivot(result for result in (result1, result2, result3))

然而,这会给我带来错误。我如何才能完成我想要的,我似乎找不到一个我能理解的简单示例,因为pivot被证明很难使用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-22 23:18:47

您需要带条件聚合的row_number()

代码语言:javascript
复制
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;
票数 1
EN

Stack Overflow用户

发布于 2019-02-22 23:20:54

您可以使用条件聚合:

代码语言:javascript
复制
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也是如此。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54830104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档