選擇查詢中的重複記錄我在SQL SERVER中具有Transactions表如下。如何刪除條款
UserID TranDate Amount
1 | 2015-04-01 | 0
1 | 2015-05-02 | 5000
1 | 2015-09-07 | 1000
1 | 2015-10-01 | -4000
1 | 2015-10-02 | -700
1 | 2015-10-03 | 252
1 | 2015-10-03 | 260
1 | 2015-10-04 | 1545
1 | 2015-10-05 | 1445
1 | 2015-10-06 | -2000
我想查詢此表以獲得任何特定日期的可用餘額。所以我使用了Windowing函數。
SELECT TransactionDate,
SUM(Amount) OVER (PARTITION BY UserId ORDER BY TransactionDate ROWS
BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM Transactions
但是,由於事務處理表的重複條目爲2015-10-03,因此它將重複日期爲2015-10-03的數據。每當我有相同的日期時,我都會預計該日期的最後一個記錄,總結可用餘額。
電流輸出
TransactionDate AvailableBalance
2015-04-01 | 0
2015-05-02 | 5000
2015-09-07 | 6000
2015-10-01 | 2000
2015-10-02 | 1300
2015-10-03 | 1552
2015-10-03 | 1804
2015-10-04 | 3349
2015-10-05 | 4794
2015-10-06 | 2794
預計:我想從上面的結果集中刪除下面的記錄。
2015-10-03 | 1552
HERE是我的SQL小提琴
OP將不得不添加'DISTINCT'。兩個重複的鍵被帶回'2015-10-03 1804' –
@EvaldasBuinauskas,是的,你是對的。該變體產生的結果集與最初請求的結果集不同,但在某些情況下可能會有用。我只是想強調有這個選項'RANGE'。如果你真的每天需要一行,那麼按照@ lad2025的回答,一開始就按日進行分組是最好的選擇。 –
不爭論。這確實是一個非常有用的提示。 –