152 votes

Meilleure façon de faire la logique de l’instruction case imbriqués dans SQL Server

<p>Je suis en train d’écrire une requête SQL, lorsque quelques-uns des colonnes retournées doivent être calculés selon beaucoup de conditions.<p>Je suis actuellement en utilisant imbriquées instructions case, mais sa peu salissant. Y a-t-il une meilleure façon (plus organisée et/ou lisible) ?</p><p>(J’utilise Microsoft SQL Server, 2005)</p><p><hr><p>Un exemple simplifié :</p><pre><code></code></pre></p>

155voto

Chris KL Points 2418
<p>Vous pourriez essayer une sorte de truc COALESCE, par exemple :</p> <pre> Sélectionnez COALESCE ( affaire quand condition1 puis calculation1 ELSE NULL fin, CASE WHEN condition2 puis calculation2 ELSE NULL fin, etc... ) </pre>

76voto

Deejers Points 164
<p>Envelopper tous les cas en un seul.<hr><pre><code></code></pre></p>

20voto

ssingh Points 59
<p>Vous pouvez combiner plusieurs conditions pour éviter la situation :<pre><code></code></pre></p>

15voto

beach Points 4116
<p>J’ai personnellement faire de cette façon, gardant les expressions CASE intégrées confinées. Je mettrais aussi commentaires d’expliquer ce qui se passe. Si c’est trop complexe, le diviser hors fonction.<pre><code></code></pre></p>

5voto

Steven A. Lowe Points 40596
<p>une fonction définie par l’utilisateur peut-être serveur mieux, au moins pour masquer la logique - en particulier si vous avez besoin de faire cela dans plus d’une requête</p>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: