【问题标题】:How do I do SQL sum across a table diagonally?如何在对角线上对表进行 SQL 求和?
【发布时间】:2019-11-18 13:34:16
【问题描述】:

我有这张桌子:

Quarter | Col A | Col B | Col C | Col D | Col E
--------+-------+-------+-------+-------+-------
1       | aaa   | 1     | 2     | 3     | 4
2       | aaa   | 1.1   | 2.2   | 3.3   | 4.4
3       | aaa   | 1.11  | 2.22  | 3.33  | 4.44
4       | aaa   | 1.111 | 2.222 | 3.333 | 4.444
1       | bbb   | 5     | 6     | 7     | 8
2       | bbb   | 5.5   | 6.6   | 7.7   | 8.8
3       | bbb   | 5.55  | 6.66  | 7.77  | 8.88
4       | bbb   | 5.555 | 6.666 | 7.777 | 8.888

我想得到这个:

Col A | Sum_Diagonally_Across_Quarters
------+-------------------------------
aaa   | 1 + 2.2 + 3.33 + 4.444
bbb   | 5 + 6.6 + 7.77 + 8.888

这个想法是将第 1 季度的 B 列与第 2 季度的 C 列相加...并按 A 列分组

【问题讨论】:

    标签: sql group-by azure-sql-data-warehouse


    【解决方案1】:

    很奇怪,但是可以使用条件聚合:

    select cola,
           sum(case when quarter = 1 then colb
                    when quarter = 2 then colc
                    when quarter = 3 then cold
                    when quarter = 4 then cole
               end)                
    from t
    group by cola
    

    【讨论】:

    • 完美解决方案!
    • 谢谢!我还没有验证这一点,但它看起来确实是一个优雅的解决方案!
    猜你喜欢
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    相关资源
    最近更新 更多