SQL(MySQL的)产生连续的日期/月报告
问题描述:
我做了迁移任务,从Oracle移植数据存储Java应用程序的MySQL 5SQL(MySQL的)产生连续的日期/月报告
你可以想像,一些查询需要重写。一切都很顺利,直到我来到Reporting模块。希望你们能给我一些提示。
不久,我有一个表(比如表名“富”)
+-------------+-------------+
| | |
| d (datetime)| v (number) |
+-------------+-------------+
| 2000-01-01 | 3 |
| 2000-01-11 | 2 |
| 2002-07-01 | 1 |
+-------------+-------------+
是我迄今所做的:
当用户给STARTDATE,结束日期为参数,我生成和报告按日期和按月:
例如2000-01-01的startDate,结束日期:2003-01-01
+-------------+-------------+
| day | Sum |
+-------------+-------------+
| 2000-01-01 | 3 |
| 2000-01-11 | 2 |
| 2002-07-01 | 1 |
+-------------+-------------+
+-------------+-------------+
| Month | Sum |
+-------------+-------------+
| 2000-01 | 5 |
| 2002-07 | 1 |
+-------------+-------------+
但要求是,如果日期是不是在表中,列出了日/月不管怎么样,有了总和= 0。像:
+-------------+-------------+
| Month | Sum |
+-------------+-------------+
| 2000-01 | 5 |
| 2000-02 | 0 |
| 2000-03 | 0 |
| 2000-04 | 0 |
| 2000-05 | 0 |
| ... | ... |
| 2002-07 | 1 |
| ... | 0 |
+-------------+-------------+
这是用Oracle实现的,但是我被Mysql困住了。任何人可以提供一些提示,更好的示例代码,如何用mySql实现它?
谢谢。
答
我在这里回答了类似的问题:
http://stackoverflow.com/questions/7252460/mysql-group-by-and-fill-empty-rows应该给你一些技巧。顺便说一句,Oracle在Oracle中是如何完成的? – 2012-07-27 10:34:08
Oracle如何实现? – stracktracer 2012-07-27 10:34:22
@RaphaëlAlthaus我会看看链接。使用Oracle,我生成月份str:SELECT DISTINCT TO_CHAR(add_months(to_date(?,'yyyy/mm'),ROWNUM-1),'yyyy/mm') 从 DUAL CONNECT BY LEVEL Kent 2012-07-27 10:42:37