-1
以前行加減值我有一個值如何從基於條件
Slno Type Amount
1 P 40
2 C 20
3 P 45
4 P 20
5 C 10
我想要得到結果列值的表。
Type Amount RESULT
P 40 40
C 20 20
P 45 65
P 20 85
C 10 75
如果類型爲C,則值會從以前的值中減去, 否則,如果類型爲P值,然後被添加到以前的值。
這是我已經試過:
;WITH FINALMIDRESULT
AS (SELECT Type,
Value1,
Row_number()
OVER(
ORDER BY Slno ASC) rownum
FROM #midRes)
SELECT C1.Type,
C1.Value1,
CASE
WHEN C1.Type = 'C' THEN (SELECT Sum(Amount)
FROM FINALMIDRESULT c2
WHERE c2.rownum <= C1.rownum)
ELSE (SELECT Sum(Amount) - Sum(Amount)
FROM FINALMIDRESULT c2
WHERE c2.rownum <= C1.rownum)
END AS RESULT
FROM FINALMIDRESULT C1
這是我有
Type Amount RESULT
P 40 0
C 20 60
P 45 0
P 20 0
C 10 135
什麼是「以前的價值」?一張桌子沒有固有的順序。那麼你想用什麼列排序?你有什麼嘗試? –
;具有FINALMIDRESULT AS ( 選擇 類型,值1,ROW_NUMBER()OVER(ORDER BY Slno ASC)從#midRes ROWNUM) 選擇 C1.Type,C1.Value1,情況下,當C1.Type ='C'then (SELECT SUM(Amount)FROM FINALMIDRESULT c2 WHERE c2.rownum <= C1.rownum) else (SELECT SUM(Amount)-Sum(Amount)FROM FINALMIDRESULT c2 WHERE c2.rownum <= C1。 rownum) 結束爲結果 來自FINALMIDRESULT C1 – Shankaranand
您正在使用哪個版本的sql-server?標記它。你目前的方法有什麼問題,錯誤的結果,錯誤?爲什麼不顯示用於樣品排序的專欄「Slno」? –