数据库中有一个数据需要处理,将明细数据中的【购买数量】和【到货数量】根据名称进行汇总,【日期】根据【购买数量】和【到货数量】进行对比判断显示
例如下面的数据源:
1、名称A的总到货数量是130,比2019-11-20的100要大,但是小于2019-11-20和2019-11-25的数量之和300,则结果的日期就等于【2019-11-25】;
1、名称B的总到货数量是180,比2019-11-20的400要小,则结果的日期就等于【2019-11-20】
数据源:
名称 日期 购买数量 到货数量
A 2019-11-20 100 80
A 2019-11-25 200 20
A 2019-11-30 300 30
B 2019-11-20 400 50
B 2019-11-25 500 60
B 2019-11-30 600 70
希望得到的结果是这样的:
名称 日期 购买数量 到货数量
A 2019-11-25 600 130
B 2019-11-20 1500 180
现在的是在明细数据后面增加一个字段进行分批汇总,但是后续判断怎么按照条件显示不知道怎么操作
SUM(PurchaseCount) over(order by Cast(PurchaseShipDate as Date),MaterialCode)
请各位大神赐教
根据您的描述,您需要对明细数据进行分组汇总,然后对比判断并取得相应的日期。对于这个问题,您可以采用以下的SQL语句来解决:
SELECT
MaterialCode AS 名称,
CASE
WHEN SUM(ReceiveCount) > PurchaseCount AND SUM(ReceiveCount) < PurchaseCount + LAG(PurchaseCount, 1, 0) OVER (ORDER BY PurchaseShipDate,MaterialCode)
THEN LAG(PurchaseShipDate, 1, NULL) OVER (ORDER BY PurchaseShipDate,MaterialCode)
WHEN SUM(ReceiveCount) > LAG(PurchaseCount, 1, 0) OVER (ORDER BY PurchaseShipDate,MaterialCode)
THEN PurchaseShipDate
ELSE NULL
END AS 日期,
SUM(PurchaseCount) AS 购买数量,
SUM(ReceiveCount) AS 到货数量
FROM YourTable
GROUP BY MaterialCode
这个SQL语句会对您的数据按照名称进行分组汇总,然后根据要求进行对比判断,得到相应的日期。最终结果中包含名称、日期、购买数量和到货数量四个字段。
希望对您有所帮助!