日期:2014-05-17  浏览次数:20710 次

update和case组合问题
我想实现的功能是,

原表sheet1$
红一  红二  红三  红四  红五  红六
10   11    12   13   16    18
4    9     11   19   21    26
1    7     9    13   16    32

新表mainT
共33列,分别为red1,red2,red3,red4.....red33

我要实现的功能是,当原表红一的值是10,在新表的ren10列上显示true或1,都可以;当原表红二的值是11,在新表的ren11列上显示true或1;....以此类推

我再sqlserver里面调试的sql语句为:

insert into mainT(red1,red2,red3,red4,red5,red6,red7,red8,red9,red10,
  red11,red12,red13,red14,red15,red16,red17,red18,red19,red20,
  red21,red22,red23,red24,red25,red26,red27,red28,red29,red30,
  red31,red32,red33)
select (case 
 when 红一 = '1' or 红二 = '1' or 红三='1' or 红四='1' or 红五='1' or 红六='1' 
 then mainT.red1=True),
   (case 
 when 红一 = '2' or 红二 = '2' or 红三='2' or 红四='2' or 红五='2' or 红六='2' 
 then mainT.red2=True),
   (case 
 when 红一 = '3' or 红二 = '3' or 红三='3' or 红四='3' or 红五='3' or 红六='3' 
 then mainT.red3=True),
   (case 
 when 红一 = '4' or 红二 = '4' or 红三='4' or 红四='4' or 红五='4' or 红六='4' 
 then mainT.red4=True),
 (case 
 when 红一 = '5' or 红二 = '5' or 红三='5' or 红四='5' or 红五='5' or 红六='5' 
 then mainT.red5=True),
   (case 
 when 红一 = '6' or 红二 = '6' or 红三='6' or 红四='6' or 红五='6' or 红六='6' 
 then mainT.red6=True),
   (case 
 when 红一 = '7' or 红二 = '7' or 红三='7' or 红四='7' or 红五='7' or 红六='7' 
 then mainT.red7=True),
   (case 
 when 红一 = '8' or 红二 = '8' or 红三='8' or 红四='8' or 红五='8' or 红六='8' 
 then mainT.red8=True),
(case 
 when 红一 = '9' or 红二 = '9' or 红三='9' or 红四='9' or 红五='9' or 红六='9' 
 then mainT.red9=True),
   (case 
 when 红一 = '10' or 红二 = '10' or 红三='10' or 红四='10' or 红五='10' or 红六='10' 
 then mainT.red10=True),
(case 
 when 红一 = '11' or 红二 = '11' or 红三='11' or 红四='11' or 红五='11' or 红六='11' 
 then mainT.red11=True),
   (case 
 when 红一 = '12' or 红二 = '12' or 红三='12' or 红四='12' or 红五='12' or 红六='12' 
 then mainT.red12=True),
   (case 
 when 红一 = '13