Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 查询以查找小于金额的行_Oracle_Cursor_Sum - Fatal编程技术网

Oracle 查询以查找小于金额的行

Oracle 查询以查找小于金额的行,oracle,cursor,sum,Oracle,Cursor,Sum,我有一个账户,其中利息借记对应于以下每个账户 amount Date 2 01-01-2012 5 02-01-2012 2 05-01-2012 1 07-01-2012 如果帐户中的总贷方为8。我需要一个查询,以找到信贷金额可以调整的利息日期 此处查询的输出应为02-01-20122+5

我有一个账户,其中利息借记对应于以下每个账户

amount      Date
2           01-01-2012
5           02-01-2012
2           05-01-2012
1           07-01-2012
如果帐户中的总贷方为8。我需要一个查询,以找到信贷金额可以调整的利息日期


此处查询的输出应为02-01-20122+5<8。我知道这可以通过游标来处理。但是有没有办法在ORACLE中将其作为单个查询写入。

不知道表的结构,这里有一个猜测:

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

注:这小于8。根据需要更改条件。

不知道表的结构,这里有一个猜测:

SELECT date from your_table
GROUP BY AMOUNT
HAVING SUM(AMOUNT) < 8
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

注:这小于8。根据需要更改条件。

不执行2+5不执行2+5按金额分组时不能选择日期。按金额分组没有任何意义,我认为按金额分组时无法选择日期。按金额分组没有任何意义,我认为如果可能是负数,则MAXcum_sum和MAXdate可能由不同的行持有。在我的情况下,不会,因为这是应用于帐户金额的利息永远不会变为负数。此解决方案也会起作用。谢谢。如果可能是负数,MAXcum_sum和MAXdate可能由不同的行持有。在我的情况下不会,因为这是应用于帐户金额的利息永远不会变为负数。这个解决方案也会起作用。谢谢
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