2017-05-25 97 views
0

我想用數值遍歷一列,然後按照我的值對這些值進行求和,然後返回相應的ID和總和。所有這些,應根據日期的升序遍歷列中的值

我的表看起來像

id | money | date 
---------- | ---------- 
01 | 2300 | 01/03/2017 
02 | 35 | 01/01/2017 
03 | 70 | 01/02/2017 

所以我的結果將是 -

id | money 
---------- 
02 | 35 
03 | 105 
01 | 2405 

從那裏,我想只返回ID與總和小於或等於一個值,所以可以說價值是2400,我的表結果將是 -

id 
--- 
02 
03 

我寫了一個查詢 -

SELECT id 
FROM tableName 
WHERE 2400 >= 
    (SELECT id, SUM(money) 
    FROM tableName 
    WHERE money IS NOT NULL 
    GROUP BY id) WHERE EXISTS 
     (SELECT * 
     FROM tableName 
     WHERE date ASC)); 

我明白,我只是總結的錢,然後比較針對頭號整數,但怎麼做我這樣做動態,並在一個查詢?我需要做一個for循環嗎?

+1

見https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an -mcve換什麼,似乎對我將要-A-極簡單的SQL查詢 – Strawberry

回答

0

您可以使用sum功能的窗口變種得到一個運行總計:

SELECT id 
FROM (SELECT id, SUM(money) OVER (ORDER BY date ASC) AS money 
     FROM monies) t 
WHERE money <= 2400