下圖是一張訂單明細表,現有金額要1700,根據訂單單號的順序依次對訂單金額進行核銷。
到支付訂單6時,支付金額不足,只能支付200,後面訂單的核銷金額為0。
1.基礎資料準備
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);
in程式設計客棧sert 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);
解題思路如下:
先計算出在每個訂單之前總共要核銷的金額數,然後加上本次將要核銷的訂單金額,跟1700比較,
如果總和小於等於1700,那麼程式設計客棧,這個訂單的訂單金額可以全部核銷,否則,只能jwbhbxnfg核銷部分,
即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
),/*計算出核銷金額*/
x2as ( select id ,
dingdan ,
sale ,
case when curr_sale_sum + sale <= 1700 then sale
else 1700 - curr_sale_sum
end as new_sale
from x1
)/*核銷金額為負數,則變更為0*/
select id as 序號,
dingdan 訂單,
sale 訂單金額,
case wjwbhbxnfghen new_sale < 0 then 0
else new_sale
end as 核銷金額
jwbhbxnfg from x2
由於不能用分析函式來解題,只好用標量子查詢實現相同的效果。當然,提供的資料有一定的侷限性,
如果序號不是連續的,直接套用我的sql無法解決,需要自己生成乙個連續的序號。
結果如下:
如何獲取公司間採購訂單或銷售訂單的交貨狀態
在上sap專案過程,上了sd模組的企業一般都要做一些跟公司間採購訂單或銷售訂單的交貨狀態的報表,通過這些報表可以經客戶的業務上提供很大的靈活性,至於如何的靈活,還是那句老話 誰用誰知道 1 如何判斷公司間採購訂單是否已交貨?這個比較簡單了,直接通過表ekpo的字段 elikz來判斷的,前台如下圖所示...
如何實現自動關閉訂單的功能?
業務場景 我們以訂單功能為例說明下 生成訂單後一段時間不支付訂單會自動關閉。最簡單的想法是設定定時任務輪詢,但是每個訂單的建立時間不一樣,定時任務的規則無法設定,如果將定時任務執行的間隔設定的過短,太影響效率。還有一種想法,在使用者進入訂單介面的時候,判斷時間執行相關操作。方式可能有很多,在這裡介紹...
計算多個函式的定積分
這裡以三個函式為例 include include double f1 double x double f2 double x double f3 double x double integral double a,double b,double pfn double return ret int ...