首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

Oracle查电表有关问题,求帮忙

2012-12-26 
Oracle查电表问题,求帮忙设备表:设备ID,设备名字实施采集电表:电表ID,设备ID,用电值,时间现在要分页查询到

Oracle查电表问题,求帮忙
设备表:设备ID,设备名字
实施采集电表:电表ID,设备ID,用电值,时间
现在要分页查询到:电表ID,本日用电。本月用点。累积电量。我查出来了,用了很长的语句,但是与到个问题
我的用电值是去今天里面的最大值,如果今天没有用电。就跟着没数据,头疼。我也不知道我这么写下去到底对不对、下面是我的sql语句
select * from (
select AA.*, rownum rn from(
   select ZDD.Tid,ZDD.dname,ZDD.BAND,ZDD.MODEL,ZDD.TERMSTATUS,max(shuju.datavalue)-min(shuju.datavalue),nvl(max(shuju.datavalue),0),max(shuju2.datavalue)-min(shuju2.datavalue)
              from (
     select 
       zd.termid tid,
       bumen.depname dname,
       zd.band,
       zd.model, 
       zd.termstatus 
               from USM_DEPARTMENT_TBL bumen,
                    USM_CORPORATIONINFO_TBL qiye,--企业表
                    STM_REGION_TBL quyu,--区域表
                    CFG_TERMTYPEINFO_TBL zdleixing,--设备类型表
                    STM_TERMINFO_TBL zd,--设备表
                    STM_SITE_TBL zhandian  --站点表
                               where  zd.regid = quyu.regid 
                                and zd.corpid = qiye.corpid
                                and zd.depid = bumen.depid
                                and zd.siteid = zhandian.siteid
                                and zd.termtype = zdleixing.termtypeid
                               and zd.termtype = 6
                                and zd.corpid = 1)
                                 ZDD, PFM_FACTDATA_TBL shuju,--实施采集数据电表
                                    PFM_FACTDATA_TBL shuju2--实施采集数据电表


                                                          
                                where ZDD.Tid = shuju.termid(+) 
                                and ZDD.Tid = shuju2.termid(+)
                                and trunc(shuju.GatherTimes(+)) = trunc(sysdate)
                                and to_char(shuju2.GatherTimes(+),'yyyymm') = to_char(sysdate,'yyyymm') 
                                                               group by ZDD.Tid,ZDD.dname,ZDD.BAND,ZDD.MODEL,ZDD.TERMSTATUS
                                )AA where rownum <=30) where rn>0;
数据应该是:
   设备ID ,部门名称。今日用电。累积用电。本月用电。   分类用电占比
      1      开发部      100KWH  3000kwh   400kwh   ?%
     2      xx部       100KWH  3000kwh   400kwh   ?%
     3      XX部       100KWH  3000kwh   400kwh   ?%
  
[解决办法]
没人吗?来人帮忙了。
[解决办法]
用with语句,把电表数据的查询处理下,例如
select * from
(select sysdate  dt from dual) a left join shuju on trunc(a.dt)=trunc(shuju.GatherTimes);
[解决办法]
用with语句,建议用储存过程。这样典型的业务处理程序,一定是要用package封装好的function或procedure
[解决办法]
没数据神仙也没法帮你,谁知道你表里存的是什么,怎么算出来你要的那些东西。

不过可以基本确定用窗口函数搞定。
[解决办法]
null
[解决办法]
null
[解决办法]
null

热点排行