java吧 关注:1,288,929贴子:12,815,149
  • 10回复贴,共1

有没有sql大神啊问个问题

只看楼主收藏回复


只有1月份有数据 怎么改sql才能变成 1-10911.00, 2-null, 3-null啊


1楼2018-08-07 19:43回复
    弄了一下午了没弄出来 要吐了


    2楼2018-08-07 19:43
    回复
      2025-11-24 21:45:45
      广告
      不感兴趣
      开通SVIP免广告
      没人嘛 是不是这种sql不可能存在的啊


      3楼2018-08-07 19:47
      回复



        IP属地:广西4楼2018-08-07 22:11
        回复
          SELECT
          MONTH (input_time) AS mon,
          sum(vol_amount) AS total
          FROM
          test
          WHERE
          input_time BETWEEN '2017-01-01'
          AND '2017-02-01'
          GROUP BY
          input_time
          UNION ALL
          SELECT DISTINCT
          1 AS mon,
          NULL AS total
          FROM
          test
          WHERE
          (
          SELECT
          MONTH (input_time) AS mon
          FROM
          test
          WHERE
          input_time BETWEEN '2017-01-01'
          AND '2017-02-01'
          GROUP BY
          input_time
          ) IS NULL
          UNION ALL
          SELECT
          MONTH (input_time) AS mon,
          sum(vol_amount) AS total
          FROM
          test
          WHERE
          input_time BETWEEN '2017-02-01'
          AND '2017-03-01'
          GROUP BY
          input_time
          UNION ALL
          SELECT DISTINCT
          2 AS mon,
          NULL AS total
          FROM
          test
          WHERE
          (
          SELECT
          MONTH (input_time) AS mon
          FROM
          test
          WHERE
          input_time BETWEEN '2017-02-01'
          AND '2017-03-01'
          GROUP BY
          input_time
          ) IS NULL
          UNION ALL
          SELECT
          MONTH (input_time) AS mon,
          sum(vol_amount) AS total
          FROM
          test
          WHERE
          input_time BETWEEN '2017-03-01'
          AND '2017-04-01'
          GROUP BY
          input_time
          UNION ALL
          SELECT DISTINCT
          3 AS mon,
          NULL AS total
          FROM
          test
          WHERE
          (
          SELECT
          MONTH (input_time) AS mon
          FROM
          test
          WHERE
          input_time BETWEEN '2017-03-01'
          AND '2017-04-01'
          GROUP BY
          input_time
          ) IS NULL


          IP属地:广西5楼2018-08-07 22:12
          回复(2)
            和一张
            (select 1 from dual union select 2 from dual union select 3 from dual)
            的表做outer join就有了


            IP属地:浙江6楼2018-08-07 22:40
            回复
              你需要的只是一个带完整月份的日期表,然后用它跟你的数据表日期字段左连接,按日期表的月份Group by 就行了。


              IP属地:上海7楼2018-08-07 22:47
              回复
                你表里没有2,3月的数据。添加数据就行了


                来自Android客户端8楼2018-08-07 23:43
                回复
                  2025-11-24 21:39:45
                  广告
                  不感兴趣
                  开通SVIP免广告


                  IP属地:湖北来自iPhone客户端9楼2018-08-08 00:21
                  回复