0

私は、クエリを持っています

select 
       CONCAT(monthname(a.tanggal), ' ', year(a.tanggal)) as bulan_tahun, 
       sum(a.kg) as kg, 
       sum(a.ka) as ka, 
       sum(a.lr) as lr, 
       sum(a.lh) as lh, 
       sum(a.lb) as lb, 
       sum(a.ll) as ll, 
       sum(a.nc) as nc, 
       sum(a.na) as na, 
       sum(a.sbs) as sbs, 
       sum(a.stbs) as stbs, 
       sum(a.kg)+sum(a.ka)+sum(a.lr)+sum(a.lh)+sum(a.sbs)+sum(a.lb)+sum(a.ll)+sum(a.nc)+sum(a.na)+sum(a.stbs) as total 
   from 
      opr.t_temuan as a 
   where 
          a.id_site=197 
      and a.tanggal between '2010-02-01' and '2011-01-31' 
      and (a.type ='f' or a.type = 'i') 
   group by 
      bulan_tahun 
   order by 
      a.tanggal asc

返品月を取得します

June 2010 0 0 5 0 4 6 0 0 3 3 21
July 2010 0 0 99 39 4 4 0 0 2 2 150
August 2010 0 0 62 79 0 5 5 0 0 0 151
September 2010 0 0 1 0 0 0 0 0 0 0 1
November 2010 0 0 59 4 75 1 0 0 8 8 155
December 2010 0 0 1 0 0 0 0 0 0 0 1

しかし、私はこのように2010年1月から2010年12月までの戻り月が欲しい

January 2010 0 0 0 0 0 0 0 0 0 0
Febuary 2010 0 0 0 0 0 0 0 0 0 0
Marc 2010 0 0 0 0 0 0 0 0 0 0
April 2010 0 0 0 0 0 0 0 0 0 0
May 2010 0 0 0 0 0 0 0 0 0 0
June 2010 0 0 5 0 4 6 0 0 3 3 21
July 2010 0 0 99 39 4 4 0 0 2 2 150
August 2010 0 0 62 79 0 5 5 0 0 0 151
September 2010 0 0 1 0 0 0 0 0 0 0 1
November 2010 0 0 59 4 75 1 0 0 8 8 155
December 2010 0 0 1 0 0 0 0 0 0 0 1

私を助けてください !!ありがとう

4

1 に答える 1

0

最初のクエリは、任意のテーブルに結合された変数を使用し、12 か月に制限されているため、必要な月/年ごとに自動生成されます...例: 2010-01-01 から 12 か月間。2 番目のクエリは、元のクエリとほぼ同じで、実際のデータを含む月ごとに事前にグループ化されています。次に、それらを左結合することにより、最初の各月は最終的なデータ集計で見つけられるものを取得しますが、アルファベット順ではなく日付に基づいて結果を保持します.

select 
      date_format(justDates.FirstOfMonth,'%M %Y') ShowDate,
      ifnull(PreSummary.kg, 0) as kg,
      ifnull(PreSummary.ka, 0) as ka,
      ifnull(PreSummary.lr, 0) as lr,
      ifnull(PreSummary.lh, 0) as lh,
      ifnull(PreSummary.lb, 0) as lb,
      ifnull(PreSummary.ll, 0) as ll,
      ifnull(PreSummary.nc, 0) as nc,
      ifnull(PreSummary.na, 0) as na,
      ifnull(PreSummary.sbs, 0) as sbs,
      ifnull(PreSummary.stbs, 0) as stbs,
      ifnull(PreSummary.total, 0) as Total
   from
      ( SELECT @dt:= date_add( @dt, interval 1 month ) FirstOfMonth
          FROM (select @dt := '2010-01-01' ) vars,
               opr.t_temuan
               LIMIT 12 ) JustDates
      left join 
      ( Select 
              date_format(a.tanggal,'%M %Y') ShowDate,
              sum(a.kg) as kg,
              sum(a.ka) as ka,
              sum(a.lr) as lr,
              sum(a.lh) as lh,
              sum(a.lb) as lb,
              sum(a.ll) as ll,
              sum(a.nc) as nc,
              sum(a.na) as na,
              sum(a.sbs) as sbs,
              sum(a.stbs) as stbs,
              sum(a.kg+a.ka+a.lr+a.lh+a.sbs+a.lb+a.ll+a.nc+a.na+a.stbs) as total
         from 
            opr.t_temuan as a
         where
                a.id_site=197
            and a.tanggal between '2010-02-01' and '2011-01-31'
            and a.type in ( 'f', 'i')
         group by
             1 ) PreSummary
      on JustDates.ShowDate = PreSummary.ShowDate
  order by
      JustDates.FirstOfMonth
于 2011-03-08T17:56:34.183 に答える