您的位置:程序门 -> oracle -> 高级技术



再次请各位高手出手相救!!!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


再次请各位高手出手相救!!![已结贴,结贴人:wisetiger]
发表于:2007-03-13 21:30:54 楼主
请教大家该问题如何用存储过程实现?
我表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表的转换。
请各位指点下,如何用存储过程实现?谢谢大家了,分只有这么多了,下次再多给各位写,谢谢!

                 


发表于:2007-03-13 21:31:471楼 得分:0
写错了,下次再多给各位些分,
发表于:2007-03-13 21:42:462楼 得分:0
不用存储过程用其他sql方法实现也可以,欢迎大家广开言路!
发表于:2007-03-14 12:49:183楼 得分:0
没人指点下哦?!
发表于:2007-03-15 09:34:174楼 得分:10
第一个实现的源码发过来看看涅


快速检索

最新资讯
热门点击