• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    如何计算多个订单的核销金额

    发布者: Error | 发布时间: 2025-6-18 14:13| 查看数: 115| 评论数: 0|帖子模式

    本文介绍了计算多个订单的核销金额的全部过程,运行数据库环境:SQL SERVER 2005,下面跟大家分享一下。
    下图是一张订单明细表,现有金额要1700,根据订单单号的顺序依次对订单金额进行核销。
    到支付订单6时,支付金额不足,只能支付200,后面订单的核销金额为0。

    1.基础数据准备
    1. CREATE TABLE #t
    2. ( id INT ,
    3. dingdan VARCHAR(20),
    4. sale MONEY
    5. )

    6. INSERT INTO #t VALUES (1,'a',100);
    7. INSERT INTO #t VALUES (2,'b',200);  
    8. INSERT INTO #t VALUES (3,'c',300);  
    9. INSERT INTO #t VALUES (4,'d',400);  
    10. INSERT INTO #t VALUES (5,'e',500);  
    11. INSERT INTO #t VALUES (6,'f',600);  
    12. INSERT INTO #t VALUES (7,'g',700);
    13. INSERT INTO #t VALUES (8,'h',800);
    14. INSERT INTO #t VALUES (9,'i',900);
    15. INSERT INTO #t VALUES (10,'j',1000);
    复制代码
    解题思路如下:
    先计算出在每个订单之前总共要核销的金额数,然后加上本次将要核销的订单金额,跟1700比较,
    如果总和小于等于1700,那么,这个订单的订单金额可以全部核销,否则,只能核销部分,
    即1700-本订单之前的所有订单金额之和。
    1. ;WITH  x1
    2.      AS ( SELECT  t1.id ,
    3.             t1.dingdan ,
    4.             t1.sale ,
    5.             ( SELECT  ISNULL(SUM(t2.sale), 0)
    6.              FROM   #t t2
    7.              WHERE   t2.id < t1.id
    8.             ) AS curr_sale_sum--本订单之前的所有订单金额
    9.         FROM   #t t1
    10.        ),/*计算出核销金额*/
    11.     x2
    12.      AS ( SELECT  id ,
    13.             dingdan ,
    14.             sale ,
    15.             CASE WHEN curr_sale_sum + sale <= 1700 THEN sale
    16.                ELSE 1700 - curr_sale_sum
    17.             END AS new_sale
    18.         FROM   x1
    19.        )
    20.    /*核销金额为负数,则变更为0*/
    21.   SELECT id AS 序号,
    22.       dingdan 订单,
    23.       sale 订单金额,
    24.       CASE WHEN new_sale < 0 THEN 0
    25.          ELSE new_sale
    26.       END AS 核销金额
    27.   FROM  x2
    复制代码
    由于不能用分析函数来解题,只好用标量子查询实现相同的效果。当然,提供的数据有一定的局限性,
    如果序号不是连续的,直接套用我的SQL无法解决,需要自己生成一个连续的序号。
    结果如下:

    以上就是关于计算多个订单的核销金额的全部解题思路,希望对大家的学习有所帮助。

    来源:https://www.jb51.net/article/70731.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表