Frage : GRUPPE DURCH Fall-Aussagen

Nicht notwendigerweise haben ein Problem, aber ich eine Frage, using FALL-Aussagen zu betrachten, wenn sie queries.

My das Fragen anhäufen, sind etwas, das…

SELECT SUMME (KOLABAUM) ähnlich ist, SUMME (COLB),
CASE @MyVar
WENN 1 DANN 'XXX'< Br/> WENN DANN 'XXX'< 2 Br/> WENN DANN 'XXX'< 3 DANN 'XXX'< Br/> WENN 4 Br/>END ALS COLC
FROM MyTable
GROUP BY
CASE @MyVar
WENN 1 DANN 'XXX'< Br/> WENN DANN 'XXX'< 2 Br/> WENN DANN 'XXX'< 3 DANN 'XXX'< Br/> WENN 4 Br/>END

…, wo „XXX“ verschiedene Werte entsprechend dem Fall sind. Frage, wird gibt es irgendeine Leistungsauswirkung in der oben genannten Frage weil I sein, welches das gesamte FALL-Teil der Frage in der Gruppe durch Klausel wiederholt? Oder würde es besser sein, das erste Teil der Frage zu nisten, wie ein CTE und dann eine Gruppe vorbei auf Spalte 3 tun? So…

WITH MyCTE (KOLABAUM, COLB, COLC) AS
(
SELECT SUMME (KOLABAUM), SUMME (COLB),
CASE @MyVar
WENN 1 DANN 'XXX'< Br/> WENN DANN 'XXX'< 2 Br/> WENN DANN 'XXX'< 3 DANN 'XXX'< Br/> WENN 4 Br/>END
FROM MyTable
)
SELECT wird KOLABAUM, COLB, COLC von der MyCTE GRUPPE DURCH COLC



Points für beste Antwort und alle mögliche anderen Zeiger/Spitzen/comments.
gegeben

Antwort : GRUPPE DURCH Fall-Aussagen

Richtig getan, sollte es kein unterscheiden, der Optimierer ist intelligent genug, Ausdrücke wiederzuverwenden.
Aber Ihr CTE arbeitet nicht dass Weise - es benötigt noch die Gruppe vorbei im CTE selbst, und Sie gewonnen nichts.

Die ad hoc Ansicht aussehen wie dieses es:

Summe (Kolabaum), Summe (ColB), MyVar vorwählen von
(AUSERWÄHLTER Kolabaum, ColB,
 @MyVar UMKLEIDEN
     WENN 1 DANN „XXX“
     WENN 2 DANN „XXX“
     WENN 3 DANN „XXX“
     WENN 4 DANN „XXX“
 MyVar BEENDEN
 VON MyTable) v
Gruppe durch MyVar

Das CTE ist das selbe.
Weitere Lösungen  
 
programming4us programming4us