我有一个记录用户ID,日期时间,交易类型和值的用户表中的交易列表。 TransactionID是主键自动增量1. TransactionType定义了存款(1)或取款(2),因此表中的所有值均为正数。我正在尝试创建一个运行总计帐户的声明。来自交易的账户报表SQL
TransactionID UserID DateTime TransactionTypeID Value
1 3112 01-04-2016 12:00 1 5.00
3 3112 01-04-2016 13:00 2 2.00
5 3112 01-04-2016 13:25 2 1.00
8 3112 02-04-2016 12:00 1 10.00
9 3112 02-04-2016 12:35 2 4.00
基本上我想创建账户查询的运行中陈述,总价值创造:
DateTime TransactionTypeID Deposit Withdrawal Balance
01-04-2016 12:00 1 5.00 5.00
01-04-2016 13:00 2 2.00 3.00
01-04-2016 13:25 2 1.00 2.00
02-04-2016 12:00 1 10.00 12.00
02-04-2016 12:35 2 4.00 8.00
我一直在使用OUTER试图APPLY选择前一个交易,但没有为准单查询。任何援助,将不胜感激
SELECT
[UserID], [DateTime],
T.[Value] *
(CASE
WHEN [TransactionTypeID] IN (1, -- deposit
2 -- withdrawal
)
THEN -1
ELSE 1
END),
T2.Value AS PrevValue
FROM
[Transaction] T
OUTER APPLY
(SELECT TOP 1 T2.[Value]
FROM [Transaction] T2
WHERE UserID = 3112
AND T2.[TransactionID] > T.TransactionID
ORDER BY T2.TransactionID) AS T2
WHERE
T.[UserID] = 3112
ORDER BY
T.[TransactionID] DESC
该查询的输出不符合OP中的条件..仅仅减去每个值,无论它是存款还是提款 – JamieD77