2010-12-02 18 views
0

J'ai un problème très subtil et je suis incapable de le résoudre jusqu'à maintenant. Prenons un exemple pour mieux expliquer le problème:Requête de transformation et de pivot

J'ai une table Personne: Avec des champs: ID, nom, Option1, Option1_Value, Option2, Option2_Value, Option3, Option3_Value

Je veux une requête qui montre les éléments suivants:

ID  Name  Reason 
1  Clark  Option1 doesn't match, Option2 doesn't match 
2  Stefan Option3 doesn't match 
3  Sandra (No errors: well just ignore this line) 
4  Steven Option2 doesn't match 

alors, que doit faire est: pour chaque champ d'option, faire une vérification (une requête qui va lire et comparer les option_value en utilisant une table externe), puis imprimer les options ne correspond pas, mais dans un seul f champ qui sert de champ de sortie d'erreur.

Est-il possible d'y parvenir en utilisant Transform et Pivot? Si oui, pourriez-vous s'il vous plaît me donner des conseils et des conseils sur la façon dont je devrais les utiliser? Sinon, existe-t-il une alternative? Ou peut-être quelque chose que je peux faire côté VBA?

Merci à d'avance les gars Miloud

Répondre

1

Votre table a déjà les trois options d'affilée, alors que diriez-vous:

SELECT ID, Name, 
    IIf(Option1_Value<>"Something","Option1 dosn't match", 
     IIf (Option2_Value<>"Something","Option2 dosn't match", 
      IIf(Option3_Value<>"Something","Option3 dosn't match","No errors"))) 
    As Reason 
FROM Table 

Il est pas tout à fait clair de votre message ce que les options ne pas correspondre, et il est clair quelle est la différence entre Option et Option_Value.

+0

Dude! Vous rock mon monde! J'ai complètement oublié la clause IIF! Merci beaucoup je vais essayer et revenir vers vous et valider la réponse si elle résout mon problème (enfin ça devrait: P)! Vraiment MERCI! – CoolStraw

+0

Comme écrit, je ne pense pas que cela produira la sortie montrée dans la question. Il semble que si l'option 1 ne correspond pas, elle ne vérifie même pas les autres options. "Clark" est montré avec deux erreurs. Bien sûr, la racine du problème est la structure de la table attribut/valeur (parfois appropriée, mais mieux évitée dans la plupart des cas). – RolandTumble

+0

RolandTumble merci pour vos commentaires, mais en fait j'ai adapté les conditions de Remou à mes besoins et cela fonctionne parfaitement J'ai séparé chaque contrôle d'option dans un seul IIF et concaténé toutes les sorties des IIF quelque chose comme: IIF (test opt1, "..." , "...") + IIF (test opt2, "...", "...") + ... etc. – CoolStraw