ShawshankLin 2015-02-16 12:56 采纳率: 0%
浏览 14504
已采纳

如何获取一年里每个月的记录总数,要求不管该月有没有数据都要显示,没有的显示为0?

假如我有个数据表,里面只有“2007-05-29”的一条数据,
我希望得到的结果是
月份 数据
1 0
2 0
3 0
4 0
5 1
6 0

7 0
8 0
9 0
10 0
11 0
12 0

有个主键商品id,销售日期date,,,mysql的数据库,有劳各位了~~~

  • 写回答

5条回答 默认 最新

  • danielinbiti 2015-02-16 16:33
    关注

    现写了一个,日期自己再加工加工吧

     create table MONTH_TABLE(
      MONTH_NUM INT
    )
    CREATE TABLE TESTDATE(
       GOOD_KEY VARCHAR(60),
       GOOD_DATE VARCHAR(60)
    )
    INSERT INTO MONTH_TABLE(MONTH_NUM) VALUES(1);
    INSERT INTO MONTH_TABLE(MONTH_NUM) VALUES(2);
    INSERT INTO MONTH_TABLE(MONTH_NUM) VALUES(3);
    INSERT INTO MONTH_TABLE(MONTH_NUM) VALUES(4);
    INSERT INTO MONTH_TABLE(MONTH_NUM) VALUES(5);
    INSERT INTO MONTH_TABLE(MONTH_NUM) VALUES(6);
    INSERT INTO MONTH_TABLE(MONTH_NUM) VALUES(7);
    INSERT INTO MONTH_TABLE(MONTH_NUM) VALUES(8);
    INSERT INTO MONTH_TABLE(MONTH_NUM) VALUES(9);
    INSERT INTO MONTH_TABLE(MONTH_NUM) VALUES(10);
    INSERT INTO MONTH_TABLE(MONTH_NUM) VALUES(11);
    INSERT INTO MONTH_TABLE(MONTH_NUM) VALUES(12);
    INSERT INTO TESTDATE(GOOD_KEY,GOOD_DATE) VALUES('ASDFA','2007-05-09');
    
    select MT.MONTH_NUM 日期,ifnull(total_num,0) as 数量 from 
    MONTH_TABLE MT left join
    (
    SELECT T.*,MONTH(GOOD_DATE)+0 M FROM (
        select count(good_key)  TOTAL_NUM,GOOD_DATE from TESTDATE group by GOOD_DATE
    ) T) t on t.m = MT.MONTH_NUM
    order by MT.MONTH_NUM
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料