2

以下のように、各口座に対応する利息が引き落とされる口座を持っています

amount      Date
2           01-01-2012
5           02-01-2012
2           05-01-2012
1           07-01-2012

アカウントの合計クレジットが 8 の場合。クレジット金額を調整できる日付の利息を検索するクエリが必要です。

ここで、クエリは 02-01-2012(2+5 < 8) として出力を与える必要があります。これはカーソルを介して処理できることを知っています。しかし、これをORACLEで単一のクエリとして記述する方法はありますか?

4

3 に答える 3

3
SELECT  pdate
FROM    (
        SELECT  t.*,
                LAG(date) OVER (ORDER BY date) AS pdate
                8 - SUM(amount) OVER (ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS diff
        FROM    mytable t
        ORDER BY
                date
        )
WHERE   diff < 0
        AND rownum = 1
于 2012-04-24T13:49:25.617 に答える
1

テーブルの構造がわからない場合は、次のように推測します。

SELECT date from your_table
GROUP BY AMOUNT
HAVING SUM(AMOUNT) < 8

注:これは8未満です。必要に応じて条件を変更します。

于 2012-04-24T13:48:17.050 に答える
0

(2+5)<8 はまだ実行していません:

select max(cum_sum), max(date)
from (
    select date, 
        sum(amount) over (order by date) cum_sum
) where cum_sum < 8
于 2012-04-24T13:50:47.033 に答える