【问题标题】:Transfer table from vertical to horizontal in sql在sql中将表从垂直转移到水平
【发布时间】:2021-04-09 21:49:55
【问题描述】:

我想从

看起来像这样:

不知道如何接近?

我的代码是这样的

FROM TABLE A, 
(SELECT PART_NO, SUM(QUANTITY) AS Type_1
FROM TABLE
WHERE STYPE = 'Type_1'
GROUP BY PART_NO, STYPE) B, 
(SELECT PART_NO, SUM(QUANTITY) AS Type_2
FROM TABLE
WHERE STYPE = 'Type_2'
GROUP BY PART_NO, STYPE) C,
(SELECT PART_NO, SUM(QUANTITY) AS Type_3
FROM TABLE
WHERE STYPE = 'Type_3'
GROUP BY PART_NO, STYPE) D,
(SELECT PART_NO, SUM(QUANTITY) AS Type_4
FROM TABLE
WHERE STYPE = 'Type_4'
GROUP BY PART_NO, STYPE) E
WHERE A.PART_NO = B.PART_NO
AND A.PART_NO = C.PART_NO
AND A.PART_NO = D.PART_NO
AND A.PART_NO = E.PART_NO
AND A.PART_NO = F.PART_NO
GROUP BY A.PART_NO, B.Type_1, C.Type_2, D.Type_2, E.Type_4

但它会删除带有 nan 的行。不知道我哪里做错了。

【问题讨论】:

    标签: sql data-transform


    【解决方案1】:

    这是一种可以使用条件聚合生成的旋转类型。

    例如,你可以这样做:

    select
      part_no,
      sum(case when stype = 'Type 1' then quantity end) as type_1,
      sum(case when stype = 'Type 2' then quantity end) as type_2,
      sum(case when stype = 'Type 3' then quantity end) as type_3
    from my_table
    group by part_no
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-31
      • 2014-05-30
      • 2017-08-07
      • 2013-12-22
      • 1970-01-01
      相关资源
      最近更新 更多