急急急!!!求大神指教
SELECT * FROM (
select 級別='1',A='A1',B='B1',用量='1',B真實用量='' UNION ALL
select 級別='2',A='B1',B='C1',用量='2',B真實用量='' UNION ALL
select 級別='3',A='C1',B='D1',用量='3',B真實用量='' UNION ALL
select 級別='3',A='C1',B='D2',用量='2',B真實用量='' UNION ALL
select 級別='3',A='C1',B='D3',用量='2',B真實用量='' UNION ALL
select 級別='3',A='C1',B='D4',用量='5',B真實用量='' UNION ALL
select 級別='4',A='D1',B='E1',用量='9',B真實用量='' UNION ALL
select 級別='4',A='D2',B='E2',用量='5',B真實用量='' ) #t
例如:
這里有 A1-B1-C1-D1-E1 要結果 A1-B1-C1-D1-E1
1 2 3 9 1 2 6 54
例如:
這里有 A1-B1-C1-D2-E2 要結果 A1-B1-C1-D2-E2
1 2 2 5 1 2 4 20
當級別高的行欄位B等于級別低的行欄位A時,將兩行用量相乘放入低級別B欄位對應的B真實用量中,若在一條流程里級別多了需要滾動相乘,如例子(級別數字越小級別越高)
要的結果如下:

uj5u.com熱心網友回復:
自己再來頂一下uj5u.com熱心網友回復:
WITH CTE
AS
(SELECT *,QTY AS NEW_QTY FROM #T A
WHERE NOT EXISTS (SELECT 1 FROM #T WHERE LEVEL<A.LEVEL AND B=A.A)
UNION ALL
SELECT A.*,B.NEW_QTY*A.QTY
FROM #T A
JOIN CTE B ON A.A=B.B
WHERE A.LEVEL>B.LEVEL)
SELECT * FROM CTE
ORDER BY LEVEL,A
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/228163.html
標籤:應用實例
上一篇:不懂
