2010-08-19 3 views
2

Y at-il de toute façon je peux convertir les requêtes inférieures à 3 sql en une seule requête?Comment faire pour convertir ces3 requêtes SQL en One?

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' 

Répondre

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

Simplicité dans la conception - de loin la meilleure réponse des réponses affichées. – Russ

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') 

EDIT:

Cela dépend ici combien de types il y a. Peut-être qu'une autre table qui stocke les types et les textes correpsonding ('Type' etc.) serait meilleure au lieu d'un cas énorme. Et même chose pour l'âge.

1

Essayez:

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

Essayez ..

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')) 
Questions connexes