有一表字段如下
用户,日期,读数我要求如2009-10-1至2009-10-30日的用量,并要求最大值 ,最小值,以及对应的日期
用量等于 30号读数-1号读数,我用以下语句可以实现可以select AREAGUID,max(ddate) as maxddate,min(ddate) as minddate,max(METERNLLJ)-min(METERNLLJ) as MeterNLLJ,max(METERNLLJ) as aa,min(METERNLLJ) as bb from ( select AREAGUID from TWater where
(to_char(DDate,'yyyy-mm-dd')='2009-10-1' or to_char(DDate,'yyyy-mm-dd')='2009-10-30') and AreaGuid = 407) xx group by AREAGUID但有一个问题,如果我1号的读数为1000,30号的读数为500,即1号>30号的读数(有很多这样的数),那么我取日期出来就错了,变成相反的了应该如何修改一下呢。谢谢
用户,日期,读数我要求如2009-10-1至2009-10-30日的用量,并要求最大值 ,最小值,以及对应的日期
用量等于 30号读数-1号读数,我用以下语句可以实现可以select AREAGUID,max(ddate) as maxddate,min(ddate) as minddate,max(METERNLLJ)-min(METERNLLJ) as MeterNLLJ,max(METERNLLJ) as aa,min(METERNLLJ) as bb from ( select AREAGUID from TWater where
(to_char(DDate,'yyyy-mm-dd')='2009-10-1' or to_char(DDate,'yyyy-mm-dd')='2009-10-30') and AreaGuid = 407) xx group by AREAGUID但有一个问题,如果我1号的读数为1000,30号的读数为500,即1号>30号的读数(有很多这样的数),那么我取日期出来就错了,变成相反的了应该如何修改一下呢。谢谢
用户 读数 日期
1 1000 2009-10-1
1 500 2009-10-30
我查出的数据应该为
用户 用量 最大 最大对应日期 最小 最小对应日期
1 -500 1000 2009-10-1 500 2009-10-30 但上面SQL实际查出是
用户 用量 最大 最大对应日期 最小 最小对应日期
1 500 1000 2009-10-30 500 2009-10-1 不对呀日期不对应,而且用量也算错了
select a.AREAGUID,--用户号
a.umax,--最大值
a.umin,--最小值
b.ddate umaxd,--最大值日期
c.ddate umind,--最小值日期
b.METERNLLJ-c.METERNLLJ umg --用量
from (select AREAGUID,max(METERNLLJ) umax,min(METERNLLJ) umin
from TWater
group by AREAGUID) a,
(select a.AREAGUID,a.METERNLLJ,a.ddate
from TWater a,
(select AREAGUID,max(ddate) ddate
from TWater
group by AREAGUID) b
where a.AREAGUID = b.AREAGUID
and a.ddate = b.ddate
) b,
(select a.AREAGUID,a.METERNLLJ,a.ddate
from TWater a,
(select AREAGUID,min(ddate) ddate
from TWater
group by AREAGUID) b
where a.AREAGUID = b.AREAGUID
and a.ddate = b.ddate
)c
where a.AREAGUID = b.AREAGUID
and a.AREAGUID = c.AREAGUID;