SQL Conditional Logic

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:

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:

  1. Trouver le titre le plus prioritaire pour chaque twig
  2. Trouver tous les noms correspondant à la plus haute priorité disponible pour chaque twig

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.