2010-08-19 66 views
2

无论如何,我可以将以下3个SQL查询转换为单个查询吗?如何将这3个SQL查询转换为一个?

insert into table1(Name,Age,Type) Select FirstName,Age,'Type1' FROM Table2 where Type='SK' 
insert into table1(Name,Age,Type) Select FirstName,Age,'Type23' FROM Table2 where Type='JK' 
insert into table1(Name,Age,Type) Select FirstName,45,'Type64' FROM Table2 where Type='YP' 

回答

10
insert into table1(Name,Age,Type) 
Select FirstName,Age,'Type1' FROM Table2 where Type='SK' 
union all 
Select FirstName,Age,'Type23' FROM Table2 where Type='JK' 
union all 
Select FirstName,45,'Type64' FROM Table2 where Type='YP' 
+2

简约的设计 - 迄今为止公布答案的最佳答案。 – Russ 2010-08-19 14:57:25

6
insert into table1(Name,Age,Type) 
Select FirstName, 
     CASE WHEN Type = 'YP' THEN 45 ELSE Age END, 
     CASE WHEN Type = 'SK' THEN 'Type1' etc. 
FROM Table2 
where Type in ('SK', 'JK', 'YP') 

编辑:

这取决于这里有多少种有。也许另一个存储类型和相关文本的表(“类型”等)会更好,而不是一个巨大的情况。对于这个时代同样的东西。

1

尝试:

Insert table1(Name,Age,Type) 
    Select FirstName, 
     Case Type When 'YP' Then 45 Else Age End, 
     'Type' + Case Type 
        When 'SK' Then '1' 
        When 'JK' Then '23' 
        When 'YP' Then '64' End 
    From Table2 
    Where Type In ('SK', 'JK', 'YP') 
0

尝试..

insert into table1(Name,Age,Type) 

(Select FirstName, 

    (case when type='YP' then 
    45 
    else 
    age 
    end) age, 

    (case when type='SK' then 
    'Type1' 
    when type='JK' then 
    'Type23' 
    when type='YP' then 
    'Type64' 
    end) type 
FROM Table2 where Type in ('SK','JK','YP'))