问一句比较麻烦的SQL语句

masse 2006-08-02 04:07:54

问题描述:
ID ColumnA ColumnB ColumnC
1 A B 0
2 A B 2
3 A B 0

4 A C 0
5 A C 1
6 A C 3
7 A C 0

我想根据ColumnA和ColumnB进行排序,然后将分组的顺序值插入ColumnC中,
规则是:取那些Column非0的记录的最大值为起始值.
希望运行sql之后的值为:

ID ColumnA ColumnB ColumnC

1 A B 3
2 A B 2 不变
3 A B 4

4 A C 4
5 A C 1 不变
6 A C 3 不变
7 A C 5

其中ID=2和ID=5,ID=6的记录,其ColumnC值原先不为0,故不变
其它的在此基础上加

有没有效率快点的sql语句?
...全文
224 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
masse 2006-08-03
  • 打赏
  • 举报
回复
这个效率会怎样?
200万左右的数据,
其中需要修改的大概有100条左右.
如果修改的数据增加到2万条呢
sxykje 2006-08-02
  • 打赏
  • 举报
回复
select t.id,t.aa,t.bb,decode(t.cc,0,tt.ee+tt.dd,t.cc)
from qwe t,
(select id,aa,bb,(row_number() over(partition by aa,bb order by cc,id)) dd ,
(select max(m.cc) from qwe m where m.aa=n.aa and m.bb=n.bb group by m.aa,m.bb) ee from qwe n) tt
where t.aa=tt.aa and
t.bb=tt.bb and
t.id=tt.id
order by id
sxykje 2006-08-02
  • 打赏
  • 举报
回复
aa-> ColumnA bb-> ColumnB cc-> ColumnC qwe->table nameselect
-----------------------------------这个也可以
t.id,t.aa,t.bb,decode(t.cc,0,tt.ee+tt.dd,t.cc)
from qwe t,
(select id,aa,bb,(row_number() over(partition by aa,bb order by cc,id)) dd ,
(select max(m.cc) from qwe m where m.aa=n.aa and m.bb=n.bb group by m.aa,m.bb) ee from qwe n) tt
where t.aa=tt.aa and
t.bb=tt.bb and
t.id=tt.id
order by id
sxykje 2006-08-02
  • 打赏
  • 举报
回复
aa-> ColumnA bb-> ColumnB cc-> ColumnC qwe->table name
select t.id,t.aa,t.bb,decode(t.cc,0,tt.cc+t.dd,t.cc)
from (select id,aa,bb,cc,(row_number() over(partition by aa,bb order by cc,id)) dd from qwe) t,
(select aa,bb,max(cc) cc from qwe group by aa,bb) tt
where t.aa=tt.aa and
t.bb=tt.bb
order by id
czbbbs 2006-08-02
  • 打赏
  • 举报
回复
select tt1.id,tt1.ca,tt1.cb, nvl2(t1.rm,t1.rm+t1.mc,tt1.cc) cc
from
tt1,
(
select id,ca,cb,cc,row_number() OVER (PARTITION BY ca,cb ORDER BY id) rm,(select max(t.cc) from tt1 t where t.ca = tt1.ca and t.cb = tt1.cb) mc from tt1
where cc= 0
) t1
where tt1.id = t1.id(+)
masse 2006-08-02
  • 打赏
  • 举报
回复
ColumnC
commandosvvv 2006-08-02
  • 打赏
  • 举报
回复
规则是:取那些Column非0的记录的最大值为起始值.?
Column??(A OR B OR C)

没看明白

17,380

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧