2017-05-25 3 views
0

数値の列を反復して、値を合計してから、それぞれのIDと合計を返します。列内の値を繰り返します。

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

そこから、私だけでIDを返すようにしたい - これらのすべては、私のテーブルには、だから私の結果は次のようになり

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

のように見える日付

の昇順に基づいている必要があります以下の値に等しい合計ので、私のテーブルの結果は次のようになり、その値は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)); 

私は単にお金を合計し、その数に対して1整数を比較したが、私は動的にこれをどのように行うのですか、と1つのクエリで午前ことを理解できますか? forループを作成する必要がありますか?

+1

はhttps://meta.stackoverflow.com/questions/333952/why-should-i-provide-anを参照してください。何のようなものかというと、非常にシンプルなSQLクエリです。 – Strawberry

答えて

0

実行中の合計を取得するためにsum機能の窓バリアントを使用することができます。

SELECT id 
FROM (SELECT id, SUM(money) OVER (ORDER BY date ASC) AS money 
     FROM monies) t 
WHERE money <= 2400 
関連する問題