日期:2014-05-18 浏览次数:20610 次
--问题在下面第(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)