【问题标题】:DB2 Pivot equivalentDB2 Pivot 等效项
【发布时间】:2021-05-09 04:38:10
【问题描述】:

希望有人能提供帮助,我正在使用一个 db2 数据库,并且我正在尝试将一些数据从行转换为列。我的数据表是这样的

Key1 Key2 Date Type Value
One Key1 01/01/2020 ABC TEST1
One Key1 01/01/2020 DEF TEST2
One Key1 01/01/2020 JKL TEST3
One Key2 01/01/2020 GHI TEST3
One Key2 02/01/2020 ABC TEST3
Two Key1 01/01/2020 ABC TEST4
Two Key1 01/01/2020 DEF TEST5
Tow Key2 01/01/2020 GHI TEST6

我希望我的结果表看起来像这样

Key1 Key2 Date ABC DEF GHI JKL
One Key1 01/01/2020 TEST1 TEST2 TEST3
One Key2 01/01/2020 TEST 3
One Key2 02/01/2020 TEST3
Two Key1 01/01/2020 TEST4 TEST5
Two Key2 01/01/2020 TEST6

我知道 SQL 中有 pivot 语句,我已经尝试过这个解决方案“https://stackoverflow.com/questions/42492501/db2-pivot-rows-to-columns”,但它会汇总 Key1 中的所有内容并且确实没有给我我想要的表,所以使用该解决方案我只看到一个行键 key1,这不是我想要的。有人可以帮忙吗?

【问题讨论】:

    标签: sql db2 ibm-midrange


    【解决方案1】:

    您可以使用条件聚合:

    select key1, key2, date,
           max(case when type = 'ABC' then value end) as abc,
           max(case when type = 'DEF' then value end) as def,
           max(case when type = 'GHI' then value end) as ghi,
           max(case when type = 'JFK' then value end) as jfk
    from t
    group by key1, key2, date;
    

    Here 是一个 dbfiddle。

    【讨论】:

    • 谢谢,组的顺序重要吗?
    • 按我的意思分组
    • @DATAMART 。 . .如果您的意思是GROUP BYSELECT 中键的顺序,那么没有。
    • 即使 Key 2 在 group by 中,也只能看到 key 1 的一行,而不是 key 2 的三行
    • @DATAMART 。 . .我添加了一个 dbfiddle。它有效。
    猜你喜欢
    • 2011-04-22
    • 1970-01-01
    • 2020-08-30
    • 2010-10-22
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多