Pergunta : GRUPO por indicações de caso

Não necessariamente um problema, mas eu tiver uma pergunta considerar using indicações de CASO em agregar a pergunta de queries.

My é algo similar… à SOMA do

SELECT (COLA), SOMA (COLB), @MyVar
do
CASE QUANDO 1 ENTÃO 'o Br/> do XXX'< QUANDO ENTÃO 'Br/> do XXX'< 2 QUANDO ENTÃO 'o Br/>END do XXX'< 3 ENTÃO 'o Br/> do XXX'< QUANDO 4 COMO o @MyVar
de COLC
FROM MyTable
GROUP BY
CASE QUANDO 1 ENTÃO 'o Br/> do XXX'< QUANDO ENTÃO 'Br/> do XXX'< 2 QUANDO ENTÃO 'o Br/>END

do XXX'< 3 ENTÃO 'o Br/> do XXX'< QUANDO 4… onde “XXX” são valores diferentes de acordo com o caso. Pergunta há, estará algum impato do desempenho na pergunta acima porque I que repete a peça inteira do CASO da pergunta no grupo pela cláusula? Ou seria melhor aninhar a primeira parte da pergunta como um CTE e faz então um grupo perto na coluna 3? Como esta… a COLA do
SELECT do

WITH MyCTE (COLA, COLB, COLC) AS
(SOMA do
SELECT (COLA), SOMA (COLB), @MyVar
do
CASE QUANDO 1 ENTÃO 'Br/> do XXX'< QUANDO ENTÃO 'Br/> do XXX'< 2 QUANDO ENTÃO 'Br/>END
FROM MyTable
do XXX'< 3 ENTÃO 'Br/> do XXX'< QUANDO 4), COLB, COLC DO GRUPO de MyCTE por COLC



Points será dada para a melhor resposta e os todos os outros ponteiros/pontas/comments.
class= do

Resposta : GRUPO por indicações de caso

Feito corretamente, não deve fazer nenhuma diferença, o optimizer é esperto bastante reúso expressões.
Mas seu CTE não trabalhará que maneira - ainda precisa o grupo perto no CTE próprio, e você não ganhou qualquer coisa.

A vista ad hoc olharia como esta:

selecionar a soma (cola), soma (ColB), MyVar de
(Cola SELETA, ColB,
 ENCAIXOTAR @MyVar
     QUANDO 1 ENTÃO “XXX”
     QUANDO 2 ENTÃO “XXX”
     QUANDO 3 ENTÃO “XXX”
     QUANDO 4 ENTÃO “XXX”
 TERMINAR MyVar
 De MyTable) v
grupo por MyVar

O CTE é o mesmo.
Outras soluções  
 
programming4us programming4us