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

注意:这是 LESS THAN 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 回答