【问题标题】:sql server 2008 r2 - multiple columns each with sum on dependent variablesql server 2008 r2 - 多列,每列都有因变量的总和
【发布时间】:2023-03-27 20:25:01
【问题描述】:

我正在尝试创建一个查询,该查询将在指定时间范围内汇总美元金额并按各种因素分组。为了清楚起见,我尽可能地精简了表格,但实际上有 20 个 code1、50 个 code2 和 15 个标识符(每个标识符都有自己的结果列)

表 t

code1      code2     date          identifier     dollars
A          a         11/22/18          1             3
B          a         11/23/18          1             4
A          b         11/24/18          1             5
B          b         11/25/18          1             6
A          a         11/22/18          2             7
B          a         11/23/18          2             8
A          b         11/24/18          2             9
B          b         11/25/18          2             10

想要的输出

code1    code2     identifier1_sum     identifier2_sum
A        a         3                   7
B        a         4                   8
A        b         5                   9
B        b         6                   10

我似乎无法正确得出分组和求和。任何帮助,将不胜感激。谢谢。

【问题讨论】:

  • 这里没有任何真正的聚合......至少对于您的示例数据。您只是在旋转数据。在您的真实数据中,您需要聚合吗?我问是因为如果有很多标识符(即向前移动的标识符将超过原来的 15 个),您将需要一个动态枢轴,因为动态条件聚合并不那么容易。否则,您可以创建 15 个条件聚合列。

标签: sql sql-server sql-server-2008-r2


【解决方案1】:

您可以在这里使用条件聚合:

SELECT
    code1,
    code2,
    SUM(CASE WHEN identifier = 1 THEN dollars ELSE 0 END) AS identifier1_sum,
    SUM(CASE WHEN identifier = 2 THEN dollars ELSE 0 END) AS identifier2_sum
FROM yourTable
GROUP BY
    code1,
    code2;

Demo

【讨论】:

    猜你喜欢
    • 2020-06-09
    • 1970-01-01
    • 2014-06-24
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    相关资源
    最近更新 更多