我的表
Meter_Reading MeterID | Reading | DateRead | 1 10 1-Jan-2012 1 20 2-Feb-2012 1 30 1-Mar-2012 1 60 2-Apr-2012 1 80 1-May-2012
读数是一个累积值,在这里我需要计算与上个月和当前月份的差额。
您能帮我弄清楚如何生成一个视图,让我可以查看每个月的消耗量(前一个月的读数-本月的读数)吗?
我尝试了之间的功能:
select address, reading as Consumption, dateread from ServiceAddress, reading, meter where address like '53 Drip Drive%' and dateread between (to_date('01-JAN-2012','DD-MON-YYYY')) and (to_date('30-SEP-2012', 'DD-MON-YYYY')) and serviceaddress.serviceaddid = meter.serviceaddid and meter.meterid = reading.meterid;
但是我所得到的只是每个月的读数而不是差异。
如何列出每月的消费量?
您可以使用该LAG功能获取上个月的读数。查询您发布引用3个tables– ServiceAddress,Reading和Meter其中没有一个是Meter_Reading表您发布的结构和数据。由于我不确定这些表中的数据是什么样子,因此将忽略您发布的查询,并将重点放在Meter_Reading为之发布数据的表上
LAG
ServiceAddress
Reading
Meter
Meter_Reading
SELECT MeterID, DateRead, Reading, PriorReading, Reading - PriorReading AmountUsed FROM (SELECT MeterID, DateRead, Reading, nvl(lag(Reading) over (partition by MeterID order by DateRead), 0) PriorReading FROM meter_reading)
我假设如果没有以前的阅读,您想假设以前的阅读为0