merge into lq_matchwoman t1
using (select y1.woman,
y2.operatedate,
y2.org,
l.orgname,
l.lqorg,
y2.name,
(select
lpad((to_number(nvl(max(substr(t.lqwbarcode, 15, 6)), 0)) + 1),
6,
'0') lqwbarcode
from lq_matchwoman t
where substr(t.lqwbarcode, 1, 9) ||
substr(t.lqwbarcode, 11, 2) = l.lqorg) as maxb
from y_woman y1, y_woman y2, lq_matchorg l
where y1.woman = y2.woman
and y2.org = l.hyorg
and y2.operatedate >
to_date('2011-02-10 00:00:00', 'yyyy-mm-dd hh24:mi:ss')
and y2.OPERATEDATE <
to_date('2011-02-14 23:59:59', 'yyyy-mm-dd hh24:mi:ss')) t2
on (t1.woman = t2.woman)
when not matched then
insert
values
(t2.woman,
(substr(t2.LQORG, 1, 9) || '1' || substr(t2.LQORG, 10, 2) ||
substr(to_char(t2.operatedate, 'yyyy-mm-dd'), 3, 2))
|| t2.maxb,
t2.name)
我这个主要实现的就是 往 lq_matchwoman中插入特定编码的表,其中这个特定编码,就是靠 lq_matchorg中的机构码加上lq_matchwoman中末六位的最大顺序码。
也就是 lpad((to_number(nvl(max(substr(t.lqwbarcode, 15, 6)), 0)) + 1),
6,
'0')总的插入到lq_matchwoman中的就是 机构前缀码 + 顺序码:机构前缀码:(substr(t2.LQORG, 1, 9) || '1' || substr(t2.LQORG, 10, 2) ||
substr(to_char(t2.operatedate, 'yyyy-mm-dd'), 3, 2))
顺序码: t2.maxb,
现在的问题就是这个 顺序码,没有往上递增
这不是应该有事务效果吗,我在插入当前,之前的一条不是应该已经插入了吗,当前的MAX取到效果的不是应该是前面记录已效果吗。。不解有没有高人,解下惑,有更好的办法,让我实现这个动态递增插入。
解决方案 »
- Oracle中的Distincit关键字问题
- oracle text全文索引问题
- PL/SQL小问题
- 匹配线路中的站点名
- oracle datafile 问题 急急
- oracle 9i 安装问题 ???
- 关于insert into一次向表里面空值的列插入多值。大哥们帮帮小弟了,谢谢先。
- 急,快疯了!!怎样改变视的检索条件!帮帮忙吧!!!!
- tcp端口只开放80,1521,7778,3334,66,为什么oracle客户端连接不了?
- 在solaris下,使用pro*c连接oracle数据库的问题,我等了很久!
- sql,三个表查询问题。
- oracle数据库与Sql server数据库连接问题:ORA-12154: TNS: 无法解析指定的连接标识符
也就是比如1
建档是 机构1的某个档案 机构1编码+000001
建档是 机构2的某个档案 也是从00001起 即: 机构2编码+000001