国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

計算多個訂單的核銷金額

2024-07-21 02:46:12
字體:
供稿:網(wǎng)友
計算多個訂單的核銷金額

數(shù)據(jù)庫環(huán)境:SQL SERVER 2005

下圖是一張訂單明細表,現(xiàn)有金額要1700,根據(jù)訂單單號的順序依次對訂單金額進行核銷。

到支付訂單6時,支付金額不足,只能支付200,后面訂單的核銷金額為0。

1.基礎(chǔ)數(shù)據(jù)準備
CREATE TABLE #t ( id INT ,dingdan VARCHAR(20),sale MONEY) INSERT INTO  #t VALUES (1,'a',100);INSERT INTO  #t VALUES (2,'b',200);    INSERT INTO  #t VALUES (3,'c',300);    INSERT INTO  #t VALUES (4,'d',400);    INSERT INTO  #t VALUES (5,'e',500);    INSERT INTO  #t VALUES (6,'f',600);    INSERT INTO  #t VALUES (7,'g',700);INSERT INTO  #t VALUES (8,'h',800);INSERT INTO  #t VALUES (9,'i',900);INSERT INTO  #t VALUES (10,'j',1000);
View Code

解題思路如下:

先計算出在每個訂單之前總共要核銷的金額數(shù),然后加上本次將要核銷的訂單金額,跟1700比較,

如果總和小于等于1700,那么,這個訂單的訂單金額可以全部核銷,否則,只能核銷部分,

即1700-本訂單之前的所有訂單金額之和。

;WITH    x1          AS ( SELECT   t1.id ,                        t1.dingdan ,                        t1.sale ,                        ( SELECT    ISNULL(SUM(t2.sale), 0)                          FROM      #t t2                          WHERE     t2.id < t1.id                        ) AS curr_sale_sum--本訂單之前的所有訂單金額               FROM     #t t1             ),/*計算出核銷金額*/        x2          AS ( SELECT   id ,                        dingdan ,                        sale ,                        CASE WHEN curr_sale_sum + sale <= 1700 THEN sale                             ELSE 1700 - curr_sale_sum                        END AS new_sale               FROM     x1             )     /*核銷金額為負數(shù),則變更為0*/    SELECT  id AS 序號,            dingdan 訂單,            sale 訂單金額,            CASE WHEN new_sale < 0 THEN 0                 ELSE new_sale            END AS 核銷金額    FROM    x2
View Code

由于不能用分析函數(shù)來解題,只好用標量子查詢實現(xiàn)相同的效果。當然,提供的數(shù)據(jù)有一定的局限性,

如果序號不是連續(xù)的,直接套用我的SQL無法解決,需要自己生成一個連續(xù)的序號。

結(jié)果如下:

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 琼中| 淳化县| 福泉市| 吴桥县| 余江县| 安徽省| 正蓝旗| 周宁县| 信宜市| 思南县| 京山县| 治县。| 政和县| 肥东县| 正安县| 印江| 邵阳县| 兰溪市| 女性| 平南县| 贵定县| 靖远县| 栾川县| 韩城市| 阿坝县| 当涂县| 昆山市| 屯留县| 休宁县| 武乡县| 贵阳市| 合江县| 宁远县| 泌阳县| 临汾市| 蒙阴县| 克什克腾旗| 香格里拉县| 杨浦区| 合作市| 类乌齐县|