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