原始数据:
这就是我想要的:
这是我的查询:
DECLARE @BAL DECIMAL(38, 2) = 1000
SELECT
ID
,CASE WHEN [TYPE] = 'CREDIT' THEN AMT ELSE 0 END CREDIT_AMT
,CASE WHEN [TYPE] = 'DEBIT' THEN AMT ELSE 0 END DEBIT_AMT
,CASE WHEN [TYPE] = 'CREDIT' THEN AMT + @BAL ELSE AMT - @BAL END BAL
FROM
@TB
我的问题是我无法SET @BAL += AMT or @BAL -= AMT
在SELECT
声明中输入内容。
如果您的SQL Server是2012+,则可以尝试以下操作:
DECLARE @BAL DECIMAL(38, 2) = 1000
DECLARE @TB TABLE (ID INT, TYPE varchar(100), AMT money);
INSERT @TB
VALUES (1, 'CREDIT', 10),
(2, 'DEBIT', 15),
(3, 'DEBIT', 5),
(4, 'CREDIT', 20),
(5, 'DEBIT', 10)
SELECT ID,
CASE WHEN [TYPE] = 'CREDIT' THEN AMT ELSE 0 END CREDIT_AMT,
CASE WHEN [TYPE] = 'DEBIT' THEN AMT ELSE 0 END DEBIT_AMT,
SUM(CASE WHEN [TYPE] = 'CREDIT' THEN AMT ELSE -AMT END) OVER(ORDER BY ID)+@BAL as BAL
FROM @TB
ORDER BY ID
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句