gpt4 book ai didi

sql - 条件分组求和

转载 作者:行者123 更新时间:2023-12-01 11:38:41 25 4
gpt4 key购买 nike

我有 2 个表:Departments 和 Sales。在我的部门表中,我有一个劳动部门 ID 和它关联的销售部门的 ID。我还想让一个部门的销售额“汇总”到另一个部门。我需要有关“汇总”销售额的查询方面的帮助。

这是表格:

TABLE = Departments
LaborDeptid | AssociatedSalesDept | RollUpTo
1 101 0
2 102 0
3 103 1
4 104 0

TABLE = Sales
Date | Sales | SalesDept
1/1/2014 10.00 101
1/1/2014 10.00 101
1/1/2014 10.00 102
1/1/2014 10.00 102
1/1/2014 10.00 103
1/1/2014 10.00 103
1/1/2014 10.00 104
1/1/2014 10.00 104

这是我想要的输出:

OUTPUT
Date | LaborDept | TotalSales
1/1/2014 1 40.00
1/1/2014 2 20.00
1/1/2014 4 20.00

如您所见,劳动部门 1 包括销售部门 101 和 103 的销售。不过我不知道该怎么做。按部门按天求和的查询非常简单:

select 
Date,
LaborDept,
sum(sales) as TotalSales
from sales s
inner join departments d on s.SalesDept = d.AssociatedSalesDept
group by Date,LaborDept`

但我将如何进行“汇总”?我试过像这样在连接中加入一个 case 语句:

select 
sum(sales) as TotalSales,
Date,
LaborDept
from sales s
inner join departments d on s.SalesDept = case when d.RollUpTo <> 0 then
(select AssociatedSalesDept
from departments
where d.RollUpTo = LaborDeptID)
else d.AssociatedSalesDept end
group by Date,LaborDept

但那只是把 103 销售部门全部丢掉了。这似乎不是正确的方法。

最佳答案

select s.[Date], coalesce(d2.LaborDeptid,d1.LaborDeptid) [LaborDept], sum(s.Sales) [TotalSales]
from Sales s
join Departments d1 on s.SalesDept = d1.AssociatedSalesDept
left join Departments d2 on d1.RollUpTo = d2.LaborDeptid
group by s.[Date], coalesce(d2.LaborDeptid,d1.LaborDeptid)

关于sql - 条件分组求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24416928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com