赞
踩
首先,可以在视图部分创建一个的视图,关于月初至当天的日期列表
代码如下
- SELECT
- ADDDATE( tab2.firstDay, tab1.firstDay - 1 ) AS date
- FROM
- (
- SELECT
- 1 AS firstDay UNION ALL
- SELECT
- 2 UNION ALL
- SELECT
- 3 UNION ALL
- SELECT
- 4 UNION ALL
- SELECT
- 5 UNION ALL
- SELECT
- 6 UNION ALL
- SELECT
- 7 UNION ALL
- SELECT
- 8 UNION ALL
- SELECT
- 9 UNION ALL
- SELECT
- 10 UNION ALL
- SELECT
- 11 UNION ALL
- SELECT
- 12 UNION ALL
- SELECT
- 13 UNION ALL
- SELECT
- 14 UNION ALL
- SELECT
- 15 UNION ALL
- SELECT
- 16 UNION ALL
- SELECT
- 17 UNION ALL
- SELECT
- 18 UNION ALL
- SELECT
- 19 UNION ALL
- SELECT
- 20 UNION ALL
- SELECT
- 21 UNION ALL
- SELECT
- 22 UNION ALL
- SELECT
- 23 UNION ALL
- SELECT
- 24 UNION ALL
- SELECT
- 25 UNION ALL
- SELECT
- 26 UNION ALL
- SELECT
- 27 UNION ALL
- SELECT
- 28 UNION ALL
- SELECT
- 29 UNION ALL
- SELECT
- 30 UNION ALL
- SELECT
- 31
- ) tab1,(
- SELECT
- CURDATE() - INTERVAL DAY (
- CURDATE()) - 1 DAY AS firstDay,
- DAY (CURDATE()) AS today
- ) tab2
- WHERE
- tab1.firstDay <= tab2.today

然后对所想要连接的查询数据进行连接
- SELECT a.date perDay,ifnull(b.num,0) dynamicIncre FROM(
- select date from since_month_begin ) a # 查询视图日期部分
- LEFT JOIN
- (SELECT
- sum(dynamic_incre) num,incre_date dates
- from dynamic_statistics
- GROUP BY incre_date) b
- ON a.date=b.dates
- ORDER BY date asc
- SELECT
- date
- FROM
- (
- SELECT
- DATE_FORMAT( DATE_SUB( last_day( curdate()), INTERVAL xc - 1 DAY ), '%Y-%m-%d' ) AS date
- FROM
- (
- SELECT
- @xi := @xi + 1 AS xc
- FROM
- ( SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 ) xc1,
- ( SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 ) xc2,
- ( SELECT @xi := 0 ) xc0
- ) xcxc
- ) x0
- WHERE
- x0.date >= (
- SELECT
- date_add( curdate(), INTERVAL - DAY ( curdate())+ 1 DAY ))
- ORDER BY
- date ASC

这部分不能当做视图,否则会报含可变参数错误
可以直接写入查询语句
- SELECT a.date perDay,ifnull(b.num,0) dynamicIncrement FROM(
-
- select date from (
- SELECT DATE_FORMAT(DATE_SUB(last_day(curdate()), INTERVAL xc-1 day), '%Y-%m-%d') as date
- FROM (
- SELECT @xi:=@xi+1 as xc from
- (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6) xc1,
- (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6) xc2,
- (SELECT @xi:=0) xc0
- ) xcxc) x0 where x0.date >= (select date_add(curdate(),interval-day(curdate())+1 day)) ORDER BY date asc) a
-
- LEFT JOIN
-
- (SELECT
- sum(dynamic_incre) num,incre_date dates
- from dynamic_statistics
- GROUP BY incre_date) b
-
- ON a.date=b.dates ORDER BY date asc

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。