我有一个包含各种团队的表格和管理这些团队的赞助商名称。 每个赞助商管理这些团队的开支按同一表格中的各栏列进行分类。 下面是一个示例表,其中包含团队名称,赞助商名称和支出...... 有人可以请帮助我如何分组在每个戏剧总和支出的一行。
表1示例
TEAM1 TEAM2 TEAM3 Sponsor Expenses1 Expenses2
A B C Play1 $1,550 $2,300
A B C Play2 $1,580 $2,225
AA BB CC Play1 $2,320 $2,900
AA BB CC Play2 $,2464 $3,672
AAA BBB CCC Play1 $3,730 $2,890
AAA BBB CCC Play2 $3,852 $2,962
我希望按照每个游戏分组的另一个表格中的输出并总结支出。请帮我。
输出
TEAM1 TEAM2 TEAM3 Play1 Play2 Difference
A B C $3,850 $3,805 $-45
AA BB CC $5,220 $6,136 $916
AAA BBB CCC $6,620 $6,814 $194
答案 0 :(得分:4)
假设你不需要动态,一个简单的条件聚合应该可以做到这一点
示例强>
Declare @Team1 varchar(50) = null
Declare @Team2 varchar(50) = null -- Try 'BB'
Declare @Team3 varchar(50) = null
Select Team1
,Team2
,Team3
,Play1 = sum(case when Sponsor='Play1' then Expenses1+Expenses2 end )
,Play2 = sum(case when Sponsor='Play2' then Expenses1+Expenses2 end )
,Diff = sum(case when Sponsor='Play2' then Expenses1+Expenses2 end )-sum(case when Sponsor='Play1' then Expenses1+Expenses2 end )
from @YourTable
Where Team1 = IsNull(@Team1,Team1)
and Team2 = IsNull(@Team2,Team2)
and Team3 = IsNull(@Team3,Team3)
Group By Team1,Team2,Team3
<强>返回强>
答案 1 :(得分:2)
您可以使用枢轴和差异,如下所示:
Select *, [Difference] = [Play2] - [Play1] from (
Select Team1, Team2, Team3, Sponsor, Expenses1+Expenses2 as Expenses from #Expensedata ) a
pivot(sum(Expenses) for sponsor in ([Play1],[Play2])) p
输出如下:
+-------+-------+-------+---------+---------+------------+
| Team1 | Team2 | Team3 | Play1 | Play2 | Difference |
+-------+-------+-------+---------+---------+------------+
| A | B | C | 3850.00 | 3805.00 | -45.00 |
| AA | BB | CC | 5220.00 | 6136.00 | 916.00 |
| AAA | BBB | CCC | 6620.00 | 6814.00 | 194.00 |
+-------+-------+-------+---------+---------+------------+
答案 2 :(得分:0)
您需要一个对Team1,Team2,Team3进行分组的查询,并且总结如下:
SUM(CASE WHEN sponsor = 'play1' THEN expenses1 + expenses2 END) as Play1
play2的类似模式,然后做差异应该是轻而易举的!