select '本月与上月相比' sjd,a.pnt_name, nvl(a.value, 0)-nvl(b.value, 0) as value
  from (select aa.sjd,aa.sort || '-' || substr(aa.pnt_name, 10, 10) as pnt_name,bb.value
          from (select a.pnt_name,a.pnt_desc,'10' as sjd,a.report_name,a.sort
                  from sis_alghis_cfg a
                 where a.report_name = '汽机经济分析工作表5'
                   and a.is_used = 1) aa
          left join (select max(a.pnt_name) as pnt_name,
                           max(a.pnt_desc) as pnt_desc,
                           avg(value) as value,
                           to_char(max(a.histime), 'mm') as histime
                      from report_day_data a
                     where to_char(a.histime, 'yyyy-mm') ='2009'||'-'||'10'
                     group by pnt_name) bb 
                     on aa.sjd = bb.histime and aa.pnt_name = bb.pnt_name) a
  left join (select aa.sjd,aa.sort || '-' || substr(aa.pnt_name, 10, 10) as pnt_name,bb.value
               from (select a.pnt_name,a.pnt_desc,'99' as sjd,a.report_name,a.sort
                       from sis_alghis_cfg a
                      where a.report_name = '汽机经济分析工作表5'
                        and a.is_used = 1) aa
               left join (select max(a.pnt_name) as pnt_name,
                                max(a.pnt_desc) as pnt_desc,
                                avg(value) as value,
                                to_char(max(a.histime), 'mm') as histime
                           from report_day_data a
                          where to_char(a.histime, 'yyyy-mm') ='2009'||'-'||'09'
                          group by pnt_name) bb 
                          on aa.sjd = bb.histime and aa.pnt_name = bb.pnt_name) b 
                          on a.pnt_name =b.pnt_name

解决方案 »

  1. 上下每段单独执行的时候是没有问题的。最后一个做链接就报错了。很奇怪。
    select aa.sjd,aa.sort || '-' || substr(aa.pnt_name, 10, 10) as pnt_name,bb.value
              from (select a.pnt_name,a.pnt_desc,'10' as sjd,a.report_name,a.sort
                      from sis_alghis_cfg a
                     where a.report_name = '汽机经济分析工作表5'
                       and a.is_used = 1) aa
              left join (select max(a.pnt_name) as pnt_name,
                               max(a.pnt_desc) as pnt_desc,
                               avg(value) as value,
                               to_char(max(a.histime), 'mm') as histime
                          from report_day_data a
                         where to_char(a.histime, 'yyyy-mm') ='2009'||'-'||'10'
                         group by pnt_name) bb 
                         on aa.sjd = bb.histime and aa.pnt_name = bb.pnt_name
      

  2. 这句select max(a.pnt_name) as pnt_name, 
           max(a.pnt_desc) as pnt_desc, 
           avg(value) as value, 
           to_char(max(a.histime), 'mm') as histime 
           from report_day_data a 
           where to_char(a.histime, 'yyyy-mm') ='2009'||'-'||'10' 
           group by pnt_name这句select max(a.pnt_name) as pnt_name, 
           max(a.pnt_desc) as pnt_desc, 
           avg(value) as value, 
           to_char(max(a.histime), 'mm') as histime 
           from report_day_data a 
           where to_char(a.histime, 'yyyy-mm') ='2009'||'-'||'09' 
           group by pnt_name有问题
      

  3. select max(a.pnt_name) as pnt_name, 
           max(a.pnt_desc) as pnt_desc, 
           avg(value) as value, 
           to_char(max(a.histime), 'mm') as histime 
           from report_day_data a 
           where to_char(a.histime, 'yyyy-mm') ='2009'||'-'||'09' 
           group by to_char(max(a.histime), 'mm')用这句看看!
      

  4. 我晕啊 。我把 pnt_name  的max 去掉了。竟然对了。一人给你们5分了
      

类似问题 »