rq type kshm jshm sl id
01-1月 -10 出库 000001 000100 100
01-1月 -10 出库 000101 000200 100
01-1月 -10 出库 000401 000600 600
01-1月 -10 出库 000701 000800 800
01-1月 -10 入库 100001 100100 100我现在想根据kshm排序后rownum值,修改id号,如何处理?
update test c set c.id = (
select rownum from (
select * from test b, (select rownum,kshm from test order by kshm) a
where a.kshm =b.kshm )
) d
where c.kshm=d.kshm 老是报错?? 今天最后的问题了!!
解决方案 »
- 求助解决一道sql题,大侠帮帮忙啊。
- 求助 oracle用户对表的操作权限问题
- 不知你遇到过这样的情况吗!!!
- extent management dictionary/local
- 一个需求,要求用过程完成的。
- pl/sql查询
- oracle817的两个简单问题.
- 如何解决Oracle 8i 的SQLPlus Worksheet中简体中文显示为乱码的问题?
- oracle9i的bin目录下有许多可执行工具,请问哪里可以找到它们各自的使用方法呢?多谢!!!
- 在 sql*plus 中如何执行存储过程?如果带参数呢?
- 奇怪的:PLS-00201 必须说明标识符 'SYS_EXTRACT_UTC'错误
- 合并票号sql,请高手指导
SET c.id =
(SELECT rn FROM (SELECT rownum rn, kshm FROM test ORDER BY kshm) a WHERE a.kshm = c.kshm)
where a.kshm =c.kshm )不行
不然的话,没有目的的写
update test c set c.id = select rownum from test
UPDATE test c
SET c.id =
(SELECT rn
FROM (SELECT rownum rn, kshm FROM (SELECT * FROM test ORDER BY kshm)) a
WHERE a.kshm = c.kshm);
--使用分析函数row_number()
UPDATE test c
SET c.id =
(SELECT rn
FROM (SELECT kshm, row_number() over(ORDER BY kshm) rn FROM test) a
WHERE a.kshm = c.kshm)