Danny_wm 2019-11-21 18:27 采纳率: 0%
浏览 218

数据根据明细合并后对比判断取值

数据库中有一个数据需要处理,将明细数据中的【购买数量】和【到货数量】根据名称进行汇总,【日期】根据【购买数量】和【到货数量】进行对比判断显示

例如下面的数据源:
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)

请各位大神赐教

  • 写回答

1条回答 默认 最新

  • 憧憬blog 2023-03-15 05:07
    关注

    根据您的描述,您需要对明细数据进行分组汇总,然后对比判断并取得相应的日期。对于这个问题,您可以采用以下的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语句会对您的数据按照名称进行分组汇总,然后根据要求进行对比判断,得到相应的日期。最终结果中包含名称、日期、购买数量和到货数量四个字段。

    希望对您有所帮助!

    评论

报告相同问题?

悬赏问题

  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100