2016-07-14 18 views
0

を実行する含める私は以下のようなテーブルを持っている:は日によって日付のグループがありませんし、合計

transID | date | payee | amount 
1  | 7/1/2016 | Balance| 100.00 
2  | 7/1/2016 | Bobi | -11.11 
3  | 7/4/2016 | Chris | -20.76 
4  | 7/7/2016 | Erin | -100.00 
5  | 7/11/2016| Tom | -2.11 
6  | 7/11/2016| Pay | 500.00 

私は、どのように日によってグループに取り組んで問題を抱えて合計し、不足している日付が含まれています。私はこのように見えるの選択を取得しようとしています:

date | balance 
7/1/2016 | 88.89 
7/2/2016 | 88.89 
7/3/2016 | 88.89 
7/4/2016 | 68.13 
7/5/2016 | 68.13 
7/6/2016 | 68.13 
7/7/2016 | -31.87 
7/8/2016 | -31.87 
7/9/2016 | -31.87 
7/10/2016 | -31.87 
7/11/2016 | 466.02 

は基本的に私は、各グループ化された日付の間のすべての日付を取得し、バランスを運ぶためにしようとしています。これは、銀行口座が日々行うように動作します。ただ、このようなものを必要な

+0

を必要なすべての日付を含むカレンダーテーブルを作成します。現在のテーブルから欠落しているデータを生成しようとするのは簡単ではありません。 –

答えて

0

は、多分それは正しい方法ではないですが、私のために働いた:)

SELECT 
    * 
FROM 
    (SELECT 
     '2016-07-01' + INTERVAL a + b DAY myDate 
    FROM 
     (SELECT 0 a UNION SELECT 1 a UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) d, (SELECT 0 b UNION SELECT 10 UNION SELECT 20 UNION SELECT 30 UNION SELECT 40) m 
    WHERE 
     '2016-07-01' + INTERVAL a + b DAY < '2016-08-01' 
    ORDER BY a + b) t1 
     LEFT JOIN 
    (SELECT 
     COUNT(*) AS myCount, DATE(your_date_field) AS myFS 
    FROM 
     your_table_that_misses_dates 
    GROUP BY myFS) t2 ON t1.myDate = t2.myFS order by myDate; 

それはあなたにこのような何かあげる:あなたの処分で一つのオプションがある enter image description here

関連する問題