我有一個表:如何將缺失的日期添加到結果表中?
accdate (DATETIME) | value (INT)
-------------------+------------
|
的ACCDATE列包含小時的粒度數據集。這意味着,日期格式爲YYYY-mm-dd HH:00:00
。如果我使用SELECT * FROM mytable ORDER BY accdate ASC
查看錶格,我會通過accdate獲得一個有序表格。但mytable不包含第一行和最後一行之間的所有可能的日期和時間(某些日期在我的程序未運行的時候丟失)。我想爲第一行和最後一行之間的所有可能的日期+小時組合設置默認值。
我知道這可以通過使用另一個表的LEFT JOIN解決,該表包含此範圍內的所有可能日期。 但是,我如何在SQL語句中構造這樣的表?我認爲用僞數據填充表是不合理的,如果我可以解決查詢中的問題。
實施例:
accdate (DATETIME) | value (INT)
---------------------+------------
2011-11-11 19:00:00 | 50
2011-11-11 20:00:00 | 53
2011-11-11 22:00:00 | 16
2011-11-12 06:00:00 | 15
2011-11-12 07:00:00 | 150
日期2011-11-11 21點00分○○秒和缺少23日下午和上午05點之間的範圍內。對於這些日期,結果表中應該有一行(在值列中包含0)。
我希望你能理解我的問題。如果有什麼不清楚的地方,請發表評論。謝謝。
你不能有一個單一查詢「製造」包含全套的假表數據加入反對。這不是查詢的工作。這就是爲什麼通常的解決方案是創建一個臨時表,填入所有的日期然後加入。創建該表不是數據庫服務器的工作。是你的。如果您只是爲了顯示目的而需要這些缺失值,那麼只需在顯示代碼中填入空格。 –
爲什麼我會得到降價?我只是想知道一些事情,並試圖描述它很好。如果你認爲它有問題,那麼投票結束或刪除 – 0xDEADBEEF
我還沒有降票,但我懷疑你是從錯誤的方向去解決這個問題。 –