Stored procedures 在sql2000中分配值
#临时表Stored procedures 在sql2000中分配值,stored-procedures,sql-server-2000,Stored Procedures,Sql Server 2000,#临时表 iPriority_num GCAMOUNT 221143 2000.00 221255 1500.00 #临时工作台 iPriority_num sPlu_cd iDetail_num siTem_cd ITEMAMOUNT 221143 0660 1 ACN00660 6000.00 221255 0112 1 CON00112
iPriority_num GCAMOUNT
221143 2000.00
221255 1500.00
#临时工作台
iPriority_num sPlu_cd iDetail_num siTem_cd ITEMAMOUNT
221143 0660 1 ACN00660 6000.00
221255 0112 1 CON00112 500.00
221255 0134 2 HAI00134 750.00
221255 0851 3 FPR50074 249.00
221255 0008 4 FNU30200 300.00
221255 0856 5 MICO0001 297.00
这是我的剧本
SELECT t.iPriority_num as [TransactionID]
,t.iDetail_num as [Order ID],t.sPlu_cd AS [ItemCode]
,t.ITEMAMOUNT
,d.GCAMOUNT as [GC Payment]
,CASE WHEN d.GCAMOUNT < t.ITEMAMOUNT
THEN (d.GCAMOUNT / CAST((SELECT COUNT(*) as cnt FROM #tempV t2 where t.iPriority_num = t2.iPriority_num) AS decimal(10,2)))
ELSE
d.GCAMOUNT − t.ITEMAMOUNT
END AS DistributedAmt
FROM #tempV t
INNER JOIN #tempR dON d.iPriority_num = t.iPriority_num
结果
TransactionID OrderID ItemCode ITEMAMOUNT GC Payment DistributedAmt
221143 1 0660 6000.00 2000.00 2000.00
221255 1 0112 500.00 1500.00 1000.00
221255 2 0134 750.00 1500.00 750.00
221255 3 0851 249.00 1500.00 1251.00
221255 4 0008 300.00 1500.00 1200.00
221255 5 0856 297.00 1500.00 1203.00
期望输出
TransactionID OrderID ItemCode ITEMAMOUNT GC Payment DistributedAmt
221143 1 0660 6000.00 2000.00 2000.00
221255 1 0112 500.00 1500.00 500.00
221255 2 0134 750.00 1500.00 750.00
221255 3 0851 249.00 1500.00 249.00
221255 4 0008 300.00 1500.00 1.00
221255 5 0856 297.00 1500.00 0.00
我只想分配每个项目的金额,如果项目金额低于GC付款请包括
#tempV
和#tempR
中的样本数据,作为插入到#tempV…
您真的还在使用SQL Server 2000
?解决方案的选择相当有限。主要是row\u number()
like窗口函数不可用。@Squirrel I已经包括了这两个表。这是一个使用sql 2000的旧系统