求一条sql语句,关键是要实现一个“与前期对比”的查询。结果大致如下:井号 生产时间 产量 上月生产时间 生产时间变化 上月产量 产量变化说明:
1、应该能只用 1 条语句实现,但我不大会。
2、井号偶尔有变动,这个月的井号可能是新井,上月没有。而上月有的井号,这个月可能没有。不过这种变动很少。
3、除井号为字符型,其他都是数值型。
1、应该能只用 1 条语句实现,但我不大会。
2、井号偶尔有变动,这个月的井号可能是新井,上月没有。而上月有的井号,这个月可能没有。不过这种变动很少。
3、除井号为字符型,其他都是数值型。
楼主可以试试 lag,lead 分析函数
lag(expression,<offset>,<default>) 函数可以访问组内当前行之前的行,
lead(expression,<offset>,<default>) 函数则正相反,可以反问组内当前行之后的行.
其中,offset是正整数,默认为1.因组内第一个条记录没有之前的行,最后一行没有之后的行,它表示要取列第N行之前或者之后的值,default就是用于处理这样的信息,默认为空.它用于当之前或者之后第N行不存在时的值。
注意:这2个函数必须指定 order By 字句./* Formatted on 2009/11/08 21:09 (Formatter Plus v4.8.8) */SELECT ename, deptno, sal, LAG (sal) OVER (ORDER BY sal) LAG, LEAD (sal) OVER (ORDER BY sal) LEAD FROM scott.emp;
/* Formatted on 2009/11/08 21:11 (Formatter Plus v4.8.8) */SELECT ename, deptno, sal, LAG (sal, 2, 0) OVER (ORDER BY sal) LAG, LEAD (sal, 2, sal) OVER (ORDER BY sal) LEAD FROM scott.emp;
Oracle 分析函数
http://blog.csdn.net/tianlesoftware/archive/2009/11/10/4795632.aspx
日期在C#中生成的..呵呵..参 //稀油井
select a.jh,b.jh,round(hehe_a-hehe_b,1) as 液量增减,round(haha_a-haha_b,1) as 油量增减 from
(
select a.jh,sum(a.RCYL1*(a.SCSJ/24)/6) as hehe_a,sum(a.RCYL2*(a.SCSJ/24)/6) as haha_a from 库 a where (a.RQ>='6-11月-09' and a.RQ<='11-11月-09' and a.DWFXMC='SOMEONE') group by a.jh
) a,
(
select b.jh,sum(b.RCYL1*(b.SCSJ/24)/7) as hehe_b,sum(b.RCYL2*(b.SCSJ/24)/7) as haha_b from 库 b where (b.RQ>='30-10月-09' and b.RQ<='5-11月-09' and b.DWFXMC='SOMEONE') group by b.jh
) b where a.jh=b.jh order by 液量增减