Je suis en train d'écrire une requête SQL, où quelques-unes des colonnes retournées doivent être calculées en fonction d'un grand nombre de conditions.
J'utilise actuellement des instructions de cas imbriqués, mais cela devient désordonné. Existe-t-il une meilleure méthode (plus organisée et/ou plus lisible) ?
(J'utilise Microsoft SQL Server, 2005)
Un exemple simplifié :
SELECT
col1,
col2,
col3,
CASE
WHEN condition
THEN
CASE
WHEN condition1
THEN
CASE
WHEN condition2
THEN calculation1
ELSE calculation2
END
ELSE
CASE
WHEN condition2
THEN calculation3
ELSE calculation4
END
END
ELSE
CASE
WHEN condition1
THEN
CASE
WHEN condition2
THEN calculation5
ELSE calculation6
END
ELSE
CASE
WHEN condition2
THEN calculation7
ELSE calculation8
END
END
END AS 'calculatedcol1',
col4,
col5 -- etc
FROM table
0 votes
Bonjour, avez-vous utilisé un outil (comme SQLinForm) pour indenter les requêtes imbriquées si joliment ?
1 votes
J'apprécierais que vous m'appreniez une méthode de formatage plus agréable pour les éléments imbriqués.
CASE WHEN
0 votes
Il y a certainement des moments où cela serait efficace et utile, mais en général, je préfère garder la logique loin de mes requêtes SQL. Juste un conseil pour la postérité.