データの開始日と終了日は、たとえば、 2016-07-10としてstart_date、2016-07-25としてend_date。私はZERO値と共に2つのフィールドを追加することによって、これらの2つの日付間のすべてのレコードが欲しいですが、私はテーブルに存在しない日付レコードを取得していません。日付レコードが2つの日付範囲で一致しない場合は0を出力します。
SQLフィドル:http://sqlfiddle.com/#!9/c8dab/9
のDDL:
CREATE TABLE `bugs` (`bug_id` int(11) NOT NULL, `bug_date` date NOT NULL, `cf1` int(11) NOT NULL, `cf2` int(11) NOT NULL, `bug_status` varchar(200) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `bugs` (`bug_id`, `bug_date`, `cf1`, `cf2`, `bug_status`) VALUES (101, '2016-07-19', 3, 2, 'RESOLVED'), (102, '2016-07-19', 2, 1, 'VERIFIED'), (103, '2016-07-19', 2, 1, 'VERIFIED'), (103, '2016-07-19', 2, 1, 'VERIFIED'), (1363, '2016-07-19', 2, 1, 'VERIFIED'), (1352, '2016-07-19', 2, 1, 'VERIFIED'), (102, '2016-07-19', 2, 1, 'VERIFIED'), (102, '2016-07-22', 2, 2, 'CLOSED'), (103, '2016-07-22', 2, 2, 'CLOSED'), (103, '2016-07-22', 2, 2, 'CLOSED'), (102, '2016-07-19', 3, 2, 'NEW'), (102, '2016-07-19', 2, 1, 'REOPENED'), (102, '2016-07-19', 2, 1, 'CLOSED'), (102, '2016-07-19', 2, 1, 'VERIFIED'), (1363, '2016-07-19', 2, 1, 'VERIFIED'), (1352, '2016-07-19', 2, 1, 'VERIFIED'), (565, '2016-07-19', 2, 1, 'VERIFIED'), (398, '2016-07-22', 2, 2, 'CLOSED'), (565, '2016-07-22', 2, 2, 'CLOSED'), (9872, '2016-07-22', 2, 2, 'CLOSED');
問合せ:
SELECT DATE_FORMAT(convert_tz(bugs.bug_date,@@session.time_zone,'+05:30'), '%Y-%m-%d') as date, SUM(bugs.cf1 + bugs.cf2) as count FROM bugs
'2016年7月10日' AND「2016年7月25日BETWEEN(bugs.bug_date ') GROUP BY bugs.bug_date;
実際の出力:
date | count
2016-07-19 | 46
2016-07-22 | 24
予想される出力:
date | count
2016-07-10 | 0
2016-07-11 | 0
2016-07-12 | 0
2016-07-13 | 0
2016-07-14 | 0
2016-07-15 | 0
2016-07-16 | 0
2016-07-17 | 0
2016-07-18 | 0
2016-07-19 | 46
2016-07-20 | 0
2016-07-21 | 0
2016-07-22 | 24
2016-07-23 | 0
2016-07-24 | 0
2016-07-25 | 0
私は、関連記事のカップルを経ていますが、私は非常に特定のためにそれを掲示するので、同様のソリューションをしようとすることで本当の答えが届きません誰かが私を示唆することができたら問題になる。
FYI ..いくつかの記事で提案されているような新しいテーブルを作成することはできません.DBアクセスは私のためだけに読まれます。
私のお手伝いをしてください、感謝しています。
編集ボタンがあります。一般に、データ表示の問題は、プレゼンテーションレイヤー/アプリケーションレベルのコードで最もよく処理されます。 – Strawberry
私は日付のヘルパーテーブルを作成します。しかし、あなたが言うようにあなたはできません。 – Drew