请教如何PLSQL实现如下逻辑?

[复制链接]
查看11 | 回复9 | 2011-2-18 11:43:34 | 显示全部楼层 |阅读模式
两张表:
结构如下:
表一:
tablename:apj_los_subcase_temp
回复

使用道具 举报

千问 | 2011-2-18 11:43:34 | 显示全部楼层
相同的subcaseid 对应 x_order_id,name,address 都一样呗?
回复

使用道具 举报

千问 | 2011-2-18 11:43:34 | 显示全部楼层
随便在subcase id内把数据排个序,然后就能实现11对应了
回复

使用道具 举报

千问 | 2011-2-18 11:43:34 | 显示全部楼层
提问的智慧·········
读一遍 不明白楼主的需求。。。
回复

使用道具 举报

千问 | 2011-2-18 11:43:34 | 显示全部楼层
本帖最后由 udfrog 于 2013-2-4 14:33 编辑
好像比想象的复杂一些。
由你的表格,link列就是从A开始严格递增的呗。简单的情况,如果不超过Z,那么可以写成merge into apj_close_id x
using (
selecta.*, row_number() over (partition by subcase_id order by 1) rn
fromapj_los_subcase_temp a
) y
on(x.subcase_id=y.subcase_id and x.link=chr(b.rn+64))
when matched then update set x.v=y.v;
复制代码
回复

使用道具 举报

千问 | 2011-2-18 11:43:34 | 显示全部楼层

测试一下, 代码如下:
merge into table2 a
using
(
select t2.rowid rid,

t1.x_order_id,

t1.name,

t1.address
from (select row_number() over(partition by subcase_id order by rowid) rn,

table1.*

from table1) t1,

(select row_number() over(partition by subcase_id order by rowid) rn,

table2.*

from table2)t2
wheret1.subcase_id = t2.subcase_id
and t1.rn = t2.rn
) b
on(a.rowid = b.rid)
when matched then

update set a.x_order_id = b.x_order_id,

a.name = b.name,

a.address = b.address;



回复

使用道具 举报

千问 | 2011-2-18 11:43:34 | 显示全部楼层
bell6248 发表于 2013-2-4 14:37
测试一下, 代码如下:
merge into table2 a

这样写,感觉表2的link 列就没有意义了。。。。
也不知道楼主的意思 ,是不是 link 为A的就 将表1的第一行更新过来,依次类推。。。。
回复

使用道具 举报

千问 | 2011-2-18 11:43:34 | 显示全部楼层
hh7yx 发表于 2013-2-4 16:28
这样写,感觉表2的link 列就没有意义了。。。。
也不知道楼主的意思 ,是不是 link 为A的就 将表1的第一 ...

表设计本身就是不太合理, 2表完全可以合并设计, 另外lz说过2表的数据是一样多的, 如果要使link有意义,那就order by link, 表的设计是关键
回复

使用道具 举报

千问 | 2011-2-18 11:43:34 | 显示全部楼层
bell6248 发表于 2013-2-4 16:36
表设计本身就是不太合理, 2表完全可以合并设计, 另外lz说过2表的数据是一样多的, 如果要使link有意义, ...

确实。。。
只能让楼主自己去选择 按什么排序能达到他的需求了。。。。
回复

使用道具 举报

千问 | 2011-2-18 11:43:34 | 显示全部楼层
为什么上来就要用plsql实现?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行