日期:2014-05-18 浏览次数:20506 次
--问题在下面第(3)部分标志了,即:第(3)部分这段更新代码,自己写的比较笨拙,大侠们能否给出更好的想法? --因为实际中,还有大概十几个这样的列需要更新后再插入(这里只给出了NumIDs和Trans两列),自己写的这段硬编码, --实际中不太可行,总不能一个一个这样手写吧?还容易出错。 --可操作性不好。。 --(1)部分测试数据 --原表 create table temp_1(ID int,NumIDs varchar(50),BuckID int,Trans varchar(50)) insert into temp_1 values (762943 ,'(C) 20 - 52' ,4, '(D) 308 - 550,837') insert into temp_1 values (762389 ,'(B) 8 - 20 ' ,4, '(D) 308 - 550,837') insert into temp_1 values (762286 ,'(D) 52 - 77,885' ,3, '(C) 154 - 308 ') insert into temp_1 values (762164 ,'(A) 0 - 8 ' ,2, '(B) 84 - 154 ') insert into temp_1 values (761637 ,'(A) 0 - 8 ' ,3, '(C) 154 - 308 ') insert into temp_1 values (761357 ,'(D) 52 - 77,885' ,4, '(D) 308 - 550,837') insert into temp_1 values (761213 ,'(A) 0 - 8 ' ,3, '(C) 154 - 308 ') insert into temp_1 values (760836 ,'(B) 8 - 20 ' ,4, '(D) 308 - 550,837') insert into temp_1 values (760337 ,'(B) 8 - 20 ' ,2, '(B) 84 - 154 ') insert into temp_1 values (54 ,'(B) 8 - 20 ' ,4, '(A) 0 - 84') go --(2)追加到原表temp_1中的数据 --新表temp_2 create table temp_2(ID int,NumIDs varchar(50),BuckID int,Trans varchar(50)) insert into temp_2 values (4467 ,'(C) 20 - 50' ,4, '(D) 400 - 590,000') insert into temp_2 values (5533 ,'(B) 15 - 20 ' ,4, '(D) 400 - 590,000') insert into temp_2 values (76 '(D) 50 - 80,885' ,3, '(C) 150 - 400 ') insert into temp_2 values (164 ,'(A) 0 - 15 ' ,2, '(B) 30 - 150 ') insert into temp_2 values (637 ,'(A) 0 - 15 ' ,3, '(A) 0 - 30 ') go --(3)如下是:需要重写代码的部分 --要求是:将temp_2中的两列NumIDs和Trans取值,更新为temp_1中NumIDs和Trans的取值,再追加到temp_1中。 update temp_2 set NumIDs=case NumIDs when '(A) 0 - 15 ' then '(A) 0 - 8 ' when '(B) 15 - 20 ' then '(B) 8 - 20 ' when '(C) 20 - 50' then '(C) 20 - 52' when '(D) 50 - 80,885' then '(D) 52 - 77,885' end, Trans=case Trans when '(A) 0 - 30 ' then '(A) 0 - 84' when '(B) 30 - 150 ' then '(B) 84 - 154 ' when '(C) 150 - 400' then '(C) 154 - 308 ' when '(D) 400 - 590,000' then '(D) 308 - 550,837' end; insert into temp_1 select * from temp_2 select * from temp_1 order by Trans
--1楼写差了,是这个 create table temp_1(ID int,NumIDs varchar(50),BuckID int,Trans varchar(50)) insert into temp_1 values (762943 ,'(C) 20 - 52' ,4, '(D) 308 - 550,837') insert into temp_1 values (762389 ,'(B) 8 - 20 ' ,4, '(D) 308 - 550,837') insert into temp_1 values (762286 ,'(D) 52 - 77,885' ,3, '(C) 154 - 308 ') insert into temp_1 values (762164 ,'(A) 0 - 8 ' ,2, '(B) 84 - 154 ') insert into temp_1 values (761637 ,'(A) 0 - 8 ' ,3, '(C) 154 - 308 ') insert into temp_1 values (761357 ,'(D) 52 - 77,885' ,4, '(D) 308 - 550,837') insert into temp_1 values (761213 ,'(A) 0 - 8 ' ,3, '(C) 154 - 308 ') insert into temp_1 values (760836 ,'(B) 8 - 20 ' ,4, '(D) 308 - 550,837') insert into temp_1 values (760337 ,'(B) 8 - 20 ' ,2, '(B) 84 - 154 ') insert into temp_1 values (54 ,'(B) 8 - 20 ' ,4, '(A) 0 - 84') go --(2)追加到原表temp_1中的数据 --新表temp_2 create table temp_2(ID int,NumIDs varchar(50),BuckID int,Trans varchar(50)) insert into temp_2 values (4467 ,'(C) 20 - 50' ,4, '(D) 400 - 590,000') insert into temp_2 values (5533 ,'(B) 15 - 20 ' ,4, '(D) 400 - 590,000') insert into temp_2 values (76 ,'(D) 50 - 80,885' ,3, '(C)