2009-05-07 5 views
0

J'ai les données suivantes dans un tableau.Besoin d'aide pour essayer de faire un simple INSERT SQL avec quelques vérifications de données simples

Name    LeftId RightId 
------------------------------------------ 
Cat      1 
Cat      2 
Dog      4 
Dog      5 
Dog        7 
Dog        69 
Gerbil     12  13 

je dois les insérer dans une nouvelle table ...

Id   Name 
------------------------------- 
1   Cat 
2   Cat 
4   Dog 
5   Dog 
7   Dog 
69   Dog 
12   Gerbil (or 13. don't care which number out of the two) 

Ainsi, les champs LeftId et RightId peuvent contenir NULLS ou une valeur NVARHCAR (même si elles sont répertoriées comme des numéros, au-dessus .. ils seront toujours des nombres .. juste l'importation ont créé le terrain nvarchar (255).

je peux modifier les champs de la table source, si nécessaire.

quelqu'un peut-il aider?

Je suppose que l'instruction insert aura une requête select et utilisera une instruction CASE. Cependant, je ne suis pas sûr de savoir comment faire le mieux.

cheers :)

Répondre

5

Vous pouvez le faire facilement avec IsNull:

INSERT INTO newtable (id,name) 
SELECT IsNull(leftid,rightid), name 
FROM oldtable 
+1

dans DB2 au lieu de IsNull vous pouvez écrire coalesce (leftid, rightid) –

+0

Je crois que COALESCE est dans la norme ANSI SQL- 92 standard, il devrait donc fonctionner avec tout DB conforme à la norme ANSI –

+0

. MySQL nécessiterait également une fusion. – Hafthor

Questions connexes