问题如下,随便举的例子:
仓库统计表:storgeCount(sDateMonth,storgeNo,objectKind, objectNo,)
在库管理表:factoryNow(fDateMonth,objectNo,storgeNo,objetcCountNum)
在仓库统计表中根据统计年月sDateMonth查出一组以员工编号eno分组的记录
Select A.sDateMonth, A.storgeNo, A.objectKind, A.objectNo, count(A.objectNo) from storgeCount A where A.sDateMonth=’YYYY/MM’ group by A.objectNo
如:
A.sDateMonth storgeNo objectKind objectNo count(A.objectNo)
2007/09 001 1 1001 8
2007/09 001 1 1002 15
2007/09 001 2 2002 12
2007/09 002 3 3001 18
… 然后利用查询出来的结果集中的每条数据来对在库管理表进行更新操作
比如依次将
fDateMonth=’ 2007/09’, objectNo=’ 1001’, storgeNo=’001’,objetcCountNum=8
fDateMonth=’ 2007/09’, objectNo=’ 1002’, storgeNo=’001’,objetcCountNum=15
fDateMonth=’ 2007/09’, objectNo=’ 2002’, storgeNo=’001’,objetcCountNum=12
…插入在库管理表。这里就是要遍历第一次查询出来的所有结果集,对其中每条记录进行操作。除了用游标有没有其他更好的办法
谢谢了
仓库统计表:storgeCount(sDateMonth,storgeNo,objectKind, objectNo,)
在库管理表:factoryNow(fDateMonth,objectNo,storgeNo,objetcCountNum)
在仓库统计表中根据统计年月sDateMonth查出一组以员工编号eno分组的记录
Select A.sDateMonth, A.storgeNo, A.objectKind, A.objectNo, count(A.objectNo) from storgeCount A where A.sDateMonth=’YYYY/MM’ group by A.objectNo
如:
A.sDateMonth storgeNo objectKind objectNo count(A.objectNo)
2007/09 001 1 1001 8
2007/09 001 1 1002 15
2007/09 001 2 2002 12
2007/09 002 3 3001 18
… 然后利用查询出来的结果集中的每条数据来对在库管理表进行更新操作
比如依次将
fDateMonth=’ 2007/09’, objectNo=’ 1001’, storgeNo=’001’,objetcCountNum=8
fDateMonth=’ 2007/09’, objectNo=’ 1002’, storgeNo=’001’,objetcCountNum=15
fDateMonth=’ 2007/09’, objectNo=’ 2002’, storgeNo=’001’,objetcCountNum=12
…插入在库管理表。这里就是要遍历第一次查询出来的所有结果集,对其中每条记录进行操作。除了用游标有没有其他更好的办法
谢谢了
问题如下,随便举的例子:
仓库统计表:storgeCount(sDateMonth,storgeNo,objectKind, objectNo,)
在库管理表:factoryNow(fDateMonth,objectNo,storgeNo,objetcCountNum)
在仓库统计表中根据统计年月sDateMonth查出一组以员工编号eno分组的记录
Select A.sDateMonth, A.storgeNo, A.objectKind, A.objectNo, count(*) from storgeCount A where A.sDateMonth=’YYYY/MM’ group by A.objectNo
如:
A.sDateMonth storgeNo objectKind objectNo count(*)
2007/09 001 1 1001 8
2007/09 001 1 1002 15
2007/09 001 2 2002 12
2007/09 002 3 3001 18
… 然后利用查询出来的结果集中的每条数据来对在库管理表进行更新操作
比如依次将
fDateMonth=’ 2007/09’, objectNo=’ 1001’, storgeNo=’001’,objetcCountNum=8
fDateMonth=’ 2007/09’, objectNo=’ 1002’, storgeNo=’001’,objetcCountNum=15
fDateMonth=’ 2007/09’, objectNo=’ 2002’, storgeNo=’001’,objetcCountNum=12
…插入在库管理表。 这里就是要遍历第一次查询出来的所有结果集,对其中每条记录进行操作。除了用游标有没有其他更好的办法
谢谢了
根据楼主的意思,改下,看能符合楼主的要求不
update factoryNow a set(fDateMonth,objectNo,storgeNo,objetcCountNum)=(select sDateMonth,objectNo,storgeNo,count(*) from storgeCount where a.关联字段= b.关联字段 group byobjectNo,fDateMonth,storgeNo,objetcCountNum)
这里并不是直接将整个结果集进行插入或更新操作,而是要对查询出的结果集中每一条记录进行一个判断,判断其是否存在与在库表中再来决定该条记录是应该insert还是update
利用游标取得处理对象数据
游标循环内:
SELECT INTO取得处理数据是否存在
更新或者插入
Kidman Ray
等 级:
发表于:2007-10-23 15:33:508楼 得分:0
根据楼主的需求。 程序的大体结构如下:
利用游标取得处理对象数据
游标循环内:
SELECT INTO取得处理数据是否存在
更新或者插入
===========================================
恩,目的是那样的,但是我就是想知道如果除去游标的话有没有另外的方法来替代,因为要用到的地方数据量会很大,用游标的话性能影响比较大。我感觉应该可以用别的方法实现的,继续顶
如下
merge into table A
using (select from B)
on(cA1=cB1...) --对两表的对应列进行比较
where matched then
update... --匹配则update
where not matched then
insert... --未匹配则insert