Disons que j'ai des informations comme celles-ci:
First_Name Last_Name Title Branch Location John Johnson Manager NY Jack Smith Internet Manager NY Chris Jones Internet Manager NY Harold O'Reilly Executive NY Liz Young Manager WA Trey Ritter Manager WA Rick Morgan Executive NC Allison Hubbard Internet Manager NC Holly Dietz Executive FL
Je veux que la logique suivante soit appliquée:
Si un gestionnaire Internet est présent à un location, les autres loggings (gestionnaire exécutif) peuvent être supprimés. S'il y a plus d'un gestionnaire d'Internet, préservez ces loggings.
S'il n'y a pas de gestionnaire internet
Donc, en substance, le résultat devrait ressembler à:
First_Name Last_Name Title Branch Location Jack Smith Internet Manager NY Chris Jones Internet Manager NY Liz Young Manager WA Trey Ritter Manager WA Allison Hubbard Internet Manager NC Holly Dietz Executive FL
Je sais que je devrai probablement utiliser une condition EXISTS ou quelque chose comme ça, mais je ne sais pas par où commencer. Comment puis-je get la sortie requirejse?
Je regarderais ce problème avec les étapes suivantes:
Donc, à partir de l'étape 1:
select Branch_Location, [titleFlag] = min(case when Title='Internet Manager' then 1 when Title='Manager' then 2 when Title='Executive' then 3 else 999 end) from table group by Branch_location
Ensuite, utilisez l'étape 1 en tant que sous-requête sur une jointure (j'utiliserai une instruction CTE pour la séparer):
;with bestTitle as ( select Branch_Location, [titleFlag] = min(case when Title='Internet Manager' then 1 when Title='Manager' then 2 when Title='Executive' then 3 else 999 end) from table group by Branch_location ) select n.* from table n join bestTitle t on n.Branch_Location=t.Branch_Location and n.Title = case t.titleFlag when 1 then 'Internet Manager' when 2 then 'Manager' when 3 then 'Executive' else 'This is an unknown condition...' end
Comme vous pouvez le voir, je n'utilise pas vraiment une instruction if
, mais plutôt une instruction case
pour pouvoir ordonner / prioriser correctement le titre. À partir de là, la sous-requête de l'étape 1 détermine ce qu'il faut searchr pour chaque twig, et la requête externe de l'étape 2 trouve les loggings qui répondent à ces conditions.