如何将这3个SQL查询转换为一个?

时间:2010-08-19 13:17:42

标签: 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'

4 个答案:

答案 0 :(得分: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'

答案 1 :(得分: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')

编辑:

这取决于有多少种类型。也许另一个存储类型和相关文本(“类型”等)的表会更好而不是一个大案例。这个时代也是如此。

答案 2 :(得分: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') 

答案 3 :(得分: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'))