私はこれを見つけました:How to group/rank records based on a changing value of a column?これは私が探しているものに似ていますが、列の値に基づいてセットをグループ化するには
基本的に、私は次のようになり、データがあります。
Id UserId Type Amount RunningTotal
----------- ----------- --------------- -------- -------------
2759 750 charge -50.00 -50.00
2760 750 charge -125.00 -175.00
4308 750 paymentGC 50.00 -125.00
4309 750 paymentGC 125.00 0.00
19916 750 charge -1.00 -1.00
19917 750 creditRefund 124.00 123.00
23238 750 paymentCC 50.00 173.00
23239 750 paymentCC 125.00 298.00
23240 750 charge -50.00 248.00
23241 750 charge -125.00 123.00
41300 750 creditRefund 125.00 248.00
42054 750 paymentCC 50.00 298.00
42055 750 paymentCC 125.00 423.00
42056 750 charge -50.00 373.00
42057 750 charge -125.00 248.00
56983 750 creditRefund 125.00 373.00
63083 750 paymentCC 50.00 423.00
63084 750 paymentCC 125.00 548.00
63085 750 charge -50.00 498.00
63086 750 charge -125.00 373.00
80829 750 creditRefund 125.00 498.00
これは動作しますが、私はそれがcreditRefund
に遭遇するたびにリセットするRunningTotal
を必要とします。私はOVER(ROWS BETWEEN CURRENT ROW AND x FOLLOWING)
を使用して見ましたが、アカウント上で何が起こるかに応じて、間に行がいくつあってもかまいません。
だから私はもっとこのように見えるためにそれを必要とする:
ここId UserId Type Amount RunningTotal
----------- ----------- --------------- -------- -------------
2759 750 charge -50.00 -50.00
2760 750 charge -125.00 -175.00
4308 750 paymentGC 50.00 -125.00
4309 750 paymentGC 125.00 0.00
19916 750 charge -1.00 -1.00
19917 750 creditRefund 124.00 123.00
23238 750 paymentCC 50.00 50.00
23239 750 paymentCC 125.00 175.00
23240 750 charge -50.00 125.00
23241 750 charge -125.00 0.00
41300 750 creditRefund 125.00 125.00
42054 750 paymentCC 50.00 50.00
42055 750 paymentCC 125.00 175.00
42056 750 charge -50.00 125.00
42057 750 charge -125.00 0.00
56983 750 creditRefund 125.00 125.00
63083 750 paymentCC 50.00 50.00
63084 750 paymentCC 125.00 175.00
63085 750 charge -50.00 125.00
63086 750 charge -125.00 0.00
80829 750 creditRefund 125.00 125.00
は、私がこれまで持っているものです。これを実現する方法について
SELECT Id, UserId, [Type], RunningTotal = SUM(Amount) OVER (ORDER BY t.Id)
FROM Transactions
WHERE UserId = @User
任意のアイデア?実行中の合計がリセットされ、PARTITION BY
節を使用できるように、何らかの方法でそれらをグループ化する必要があるように感じます。しかし、私はそれを働かせることができませんでした。それがダウンすると、私はそれがdbから返された後、私はC#でそれを行うことができると思いますが、私はむしろする必要はありません。各グループgrp
の開始を識別するためにサブクエリを使用し
ケースを使用してリセットすることができますそれについて学ぶのに役立ちます。ありがとう!私はこれを試してみましょう。 – ahwm
@ahwmお手伝いします! – SqlZim