Salut J'essaie de produire quelque chose comme ce qui suit, mais je constate qu'il y a beaucoup de duplication de code en cours.duplication de code dans les déclarations de cas sql
| australian_has_itch | kiwi_has_itch |
| yes | no |
| no | n/a |
| n/a | no |
...
Ma requête ressemble à ceci avec deux déclarations de cas qui font la même chose, mais retournez le pays (ma vraie requête a 5 de ces déclarations de cas):
SELECT
CASE
WHEN
NOT EXISTS (
SELECT person_id
FROM people_with_skin
WHERE people_with_skin.person_id = people.person_id
AND people.country = "Australia"
)
THEN 'N/A'
WHEN
EXISTS (
SELECT person_id
FROM itch_none_to_report
WHERE people.country = "Australia"
AND person_id = people.person_id
)
THEN 'None to report'
WHEN
EXISTS (
SELECT person_id
FROM itchy_people
WHERE people.country = "Australia"
AND person_id = people.person_id
)
THEN 'Yes'
ELSE 'No'
END australian_has_itch,
CASE
WHEN
NOT EXISTS (
SELECT person_id
FROM people_with_skin
WHERE people_with_skin.person_id = people.person_id
AND people.country = "NZ"
)
THEN 'N/A'
WHEN
EXISTS (
SELECT person_id
FROM itch_none_to_report
WHERE people.country = "NZ"
AND person_id = people.person_id
)
THEN 'None to report'
WHEN
EXISTS (
SELECT person_id
FROM itchy_people
WHERE people.country = "NZ"
AND person_id = people.person_id
)
THEN 'Yes'
ELSE 'No'
END kiwi_has_itch,
FROM people
Y a-t-il un moyen pour moi de condenser cela d'une façon ou d'une autre et de ne pas avoir autant de duplication de code?
Merci!
Vous ne devriez pas besoin de faire des déclarations de cas comme celui-ci - Ce serait mieux si vous avez publié quelques lignes de chacun de votre table (s) –
@NS: est-il un particulier SGBD avec lequel vous voulez travailler, ou cherchez-vous une solution générale? – outis
Désolé pour hors sujet, mais WTF construisez-vous? Les gens avec la peau? Y a-t-il des gens SANS peau? Des démangeaisons? –