sql server 2008 r2 - 多列,每列都有因变量的总和
Posted
技术标签:
【中文标题】sql server 2008 r2 - 多列,每列都有因变量的总和【英文标题】:sql server 2008 r2 - multiple columns each with sum on dependent variable 【发布时间】:2018-11-29 16:29:11 【问题描述】:我正在尝试创建一个查询,该查询将在指定时间范围内汇总美元金额并按各种因素分组。为了清楚起见,我尽可能地精简了表格,但实际上有 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 个条件聚合列。 【参考方案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
【讨论】:
以上是关于sql server 2008 r2 - 多列,每列都有因变量的总和的主要内容,如果未能解决你的问题,请参考以下文章
在SqlServer2008R2中,根据分隔符把一列的值切割成多列
如何在 SQL Server 2008 R2 表中添加“上次更新”列?