请教大家该问题如何用存储过程实现?
我表test1里原始数据格式为:
hm rq xx
--------------------------------------------
a 20070301 m,n,t
b 20070302 f,g,h
a 20070305 ,n,t
a 20070308 h,n,t,w
........
我通过相关的程序把test1表的数据已经转到表test2里,并增加了相应的逗号顺序列,格式如下:
hm rq xh no
---------------------------------------------------------
a 20070301 m 1
a 20070301 n 2
a 20070301 t 3
b 20070302 f 1
b 20070302 g 2
b 20070302 h 3
a 20070305 1
a 20070305 n 2
a 20070305 t 3
a 20070308 h 1
a 20070308 n 2
a 20070308 t 3
a 20070308 w 4
..............
上面的东西已经实现了,
下面我想请大家帮助存储过程要做的东西是什么呢,如test1表里的hm字段值只有一条数据如hm为b,其在表test2里的相关值一直
保持不变,就直接把test2里的hm为b的所有相关
信息放到表test3里,当然要判断test2表里hm为b的这里情况,我想可以根据rq和hm来判断只有一条。
需要说明的是,在表test3里增加两个字段ksrq和jsrq(对于表test2里的hm对应的xh的ksrq我们默认
其为20061201,默认jsrq的值为20071201)如果某号码的对于表test1里hm字段值为多于一条以上的,就需要依照表test2里的相关xh对应的no信息来判断其变化,
并随后修改其ksrq或jsrq的值,如号码hm=a其在表1记录
hm rq xx
--------------------------------------------
a 20070301 m,n,t
到20070305的时候变成
hm rq xx
-------------------------------------------- a 20070305 ,n,t
也就是号码a的xx字段的第一逗号位置相关信息m在20070305取消掉了,
其在test2里的对应记录为 hm rq xh no
---------------------------------------------------------
a 20070301 m 1
a 20070301 n 2
a 20070301 t 3
、、、、
a 20070305 1
a 20070305 n 2
a 20070305 t 3
那么我们在表test3里就插如相关信息并把jsrq的相关信息更新为 hm rq xx ksrq jsrq
----------------------------------------------------
a 20070301 m 20061201 20070305
a 20070301 n 20061201 20071201
a 20070301 t 20061201 20071201到20070308的时候在表test1里是 hm rq xx
--------------------------------------------
a 20070308 h,n,t,w也就是到20070308的时候,hm等于a的相关xx信息的第一个位置和第四个位置增加了新的信息,
其在test2里的对应记录为 hm rq xh no
---------------------------------------------------------
a 20070301 m 1
a 20070301 n 2
a 20070301 t 3
、、、、
a 20070305 1
a 20070305 n 2
a 20070305 t 3 a 20070308 h 1
a 20070308 n 2
a 20070308 t 3
a 20070308 w 4
----
新增加的第一个位置和第四个位置的ksrq都应该为
20070308,jsrq我们默认为20071201。
也就是 最后test3表的数据结果格式为:(当然别忘记了把hm=b的没放进来,其在表test1里只有一条记录,其ksrq和jsrq上面已经说了,没变化用默认的值) hm rq xx ksrq jsrq
---------------------------------------------------------------
a 20070301 m 20061201 20070305
a 20070301 n 20061201 20071201
a 20070301 t 20061201 20071201
a 20070301 h 20070308 20071201
a 20070301 w 20070308 20071201
b 20070302 f 20061201 20071201
b 20070302 g 20061201 20071201
b 20070302 h 20061201 20071201
。
说白了,也就是根据表test2里的同一个hm多次循环,依照字段no(逗号位置序号)来对test3表进行插入或更新操作,
我这里为什么要提下test1表是为了让大家更明白我的意思,实际上只需要从test2到test3表的转换。
请各位指点下,如何用存储过程实现?谢谢大家了,分只有这么多了,下次再多给各位写,谢谢!
我表test1里原始数据格式为:
hm rq xx
--------------------------------------------
a 20070301 m,n,t
b 20070302 f,g,h
a 20070305 ,n,t
a 20070308 h,n,t,w
........
我通过相关的程序把test1表的数据已经转到表test2里,并增加了相应的逗号顺序列,格式如下:
hm rq xh no
---------------------------------------------------------
a 20070301 m 1
a 20070301 n 2
a 20070301 t 3
b 20070302 f 1
b 20070302 g 2
b 20070302 h 3
a 20070305 1
a 20070305 n 2
a 20070305 t 3
a 20070308 h 1
a 20070308 n 2
a 20070308 t 3
a 20070308 w 4
..............
上面的东西已经实现了,
下面我想请大家帮助存储过程要做的东西是什么呢,如test1表里的hm字段值只有一条数据如hm为b,其在表test2里的相关值一直
保持不变,就直接把test2里的hm为b的所有相关
信息放到表test3里,当然要判断test2表里hm为b的这里情况,我想可以根据rq和hm来判断只有一条。
需要说明的是,在表test3里增加两个字段ksrq和jsrq(对于表test2里的hm对应的xh的ksrq我们默认
其为20061201,默认jsrq的值为20071201)如果某号码的对于表test1里hm字段值为多于一条以上的,就需要依照表test2里的相关xh对应的no信息来判断其变化,
并随后修改其ksrq或jsrq的值,如号码hm=a其在表1记录
hm rq xx
--------------------------------------------
a 20070301 m,n,t
到20070305的时候变成
hm rq xx
-------------------------------------------- a 20070305 ,n,t
也就是号码a的xx字段的第一逗号位置相关信息m在20070305取消掉了,
其在test2里的对应记录为 hm rq xh no
---------------------------------------------------------
a 20070301 m 1
a 20070301 n 2
a 20070301 t 3
、、、、
a 20070305 1
a 20070305 n 2
a 20070305 t 3
那么我们在表test3里就插如相关信息并把jsrq的相关信息更新为 hm rq xx ksrq jsrq
----------------------------------------------------
a 20070301 m 20061201 20070305
a 20070301 n 20061201 20071201
a 20070301 t 20061201 20071201到20070308的时候在表test1里是 hm rq xx
--------------------------------------------
a 20070308 h,n,t,w也就是到20070308的时候,hm等于a的相关xx信息的第一个位置和第四个位置增加了新的信息,
其在test2里的对应记录为 hm rq xh no
---------------------------------------------------------
a 20070301 m 1
a 20070301 n 2
a 20070301 t 3
、、、、
a 20070305 1
a 20070305 n 2
a 20070305 t 3 a 20070308 h 1
a 20070308 n 2
a 20070308 t 3
a 20070308 w 4
----
新增加的第一个位置和第四个位置的ksrq都应该为
20070308,jsrq我们默认为20071201。
也就是 最后test3表的数据结果格式为:(当然别忘记了把hm=b的没放进来,其在表test1里只有一条记录,其ksrq和jsrq上面已经说了,没变化用默认的值) hm rq xx ksrq jsrq
---------------------------------------------------------------
a 20070301 m 20061201 20070305
a 20070301 n 20061201 20071201
a 20070301 t 20061201 20071201
a 20070301 h 20070308 20071201
a 20070301 w 20070308 20071201
b 20070302 f 20061201 20071201
b 20070302 g 20061201 20071201
b 20070302 h 20061201 20071201
。
说白了,也就是根据表test2里的同一个hm多次循环,依照字段no(逗号位置序号)来对test3表进行插入或更新操作,
我这里为什么要提下test1表是为了让大家更明白我的意思,实际上只需要从test2到test3表的转换。
请各位指点下,如何用存储过程实现?谢谢大家了,分只有这么多了,下次再多给各位写,谢谢!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货