2010-11-11 4 views
0

J'ai ma table de rôles (qui pour moi était mal planifiée) qui se compose de 4 champs: nom_rôle, type1, type2, type3.Comment faire une instruction if dans Access?

Chaque typeX a un Y pour oui ou N pour non.

données de l'échantillon:

Hero, Y, N, N 
Human, N, Y, N 
Dog, Y, N, N 

Je voudrais ma sortie soit:

Hero Type1 
Human Type2 
Dog Type1 

aide? S'il vous plaît!

Répondre

1

Vous devez utiliser l'instruction IIF pour cela, et dans votre cas, vous devez les imbriquer. Quelque chose comme:

select role_name, 
    iif(type1 = "Y", "Type1", iif(type2 = "Y", "Type2", iif(type3 = "Y", "Type3", "unknown"))) 
from roles 
+0

Hm, l'accès lance #Er Ror dans chaque rangée – Mik0r

+0

Nevermind, got it. Le type de données était oui/non et a été évalué à -1/0. Oops. Merci! – Mik0r

0

Vous pouvez utiliser imbriqué IIF statements pour acheive cette

SELECT role_name, iif(type1='Y', "Type1", 
        iif(type2='Y', "Type2", "Type3")) 
FROM roles 

ou si vous voulez savoir que aucun type n'a été attribué

SELECT role_name, iif(type1='Y', "Type1", 
        iif(type2='Y', "Type2", 
        iif(type3='Y', "Type3", "N/A"))) 
FROM roles 

Toutefois, cela ne suppose que vous n'aura jamais quelqu'un avec plusieurs types ...

+0

Est-ce que cela a de l'importance si type1, type2, type3 ont un type de données comme oui/non? – Mik0r

+0

Vous pouvez l'évaluer comme true false dans ce cas, IE iif (type1, "Type1", etc. Pas besoin de vérification d'égalité (sauf si aucune valeur par défaut n'est spécifiée alors vous avez des valeurs nulles) – Mohgeroth

Questions connexes