select t.*,sum(je) over(partition by dd,bh,bz order by je) zh from tablename t
解决方案 »
- oracle
- 如何优化这段SQL
- oracle中有没有像java finally一样的关键字啊。
- 个hibernate查询ORCALE数据库的问题??
- 请教各位大侠一个问题,不好意思,应不属于oracle的,但和oracle有点关系
- 请各位高手帮帮!怎样建立新的Oracle数据库 (高分!!!!)
- sqlplus里exp命令不能用?
- oracle中如何用一条delete语句删除多张表中的记录?
- 表名称要改,怎么不丢数据下完成?
- 在Oracle数据库里要存储大的二进制数据包,如Winzip或Winrar压缩包,应选择何种数据类型的字段?在BCB6里如何录入?
- 这个sql如何写?
- 在windows2003server上安装oracle9i时为何出现死机现象?
还有 其他字段不行呀 duanzilin(寻)
二大队 2005B00156 1 1000 1100
一大队 2005B00313 1 100 100
这是结果
select dd,bh,bz,sum(je) over(partition by dd,bh,bz order by je) zh from tablename t
二大队 2005B00156 1 100 100
二大队 2005B00156 1 1000 1100
一大队 2005B00313 1 100 100
想要的
二大队 2005B00156 1 100 0
二大队 2005B00156 1 1000 1100
一大队 2005B00313 1 100 100
二大队 2005B00156 1 1000 1100
一大队 2005B00313 1 100 100 --这一条怎么不是0
二大队 2005B00156 1 300 0
二大队 2005B00156 1 200 0
二大队 2005B00156 1 1000 1600
一大队 2005B00313 1 100 100
没测试过,你试下吧:select dd,bh,bz,decode(max(zh) over(partition by dd,bh,bz),zh,zh,0) zh from
(select dd,bh,bz,sum(je) over(partition by dd,bh,bz order by je) zh from tablename t)
(
select *,te=(select min(je) from t a where a.bh=b.bh)
from t b) a where a.dd=b.dd)>=2 and je=te then 0
else te end
from
(
select *,te=(select min(je) from t a where a.bh=b.bh)
from t b) b
from table a,
(select sum(nvl(a.je,0)) as je,max(rowid) as rowid from table b group by dd,bh,bz) b
where a.rowid(+) = b.rowid
order by dd,bh,bz