Multiple quando dentro CASE sem expressão em SQL?
Pergunta
DECLARE @TestVal int
SET @TestVal = 5
SELECT
CASE
WHEN @TestVal <=3 THEN 'Top 3'
ELSE 'Other'
END
Eu vi este código de exemplo online, mas eu não poderia encontrar um exemplo onde não havia nenhuma expressão e tinha mais de um, quando, então eu estou querendo saber se este tipo de coisa é OK:
DECLARE @TestVal int
SET @TestVal = 5
SELECT
CASE
WHEN @TestVal <=3 THEN 'Top 3'
WHEN (select ...) = 1 THEN 'Other Value'
WHEN (select ...) = 2 THEN 'Other Value 2'
ELSE 'Other'
END
Ou eu preciso dizer CASE WHEN para cada linha?
Solução
Caso toma a seguinte forma
CASE WHEN Condition THEN Result
WHEN Condition2 THEN Result2
ELSE Default
END
Editar
Este assume seu usando Microsoft SQL Server outros DBMS pode ser diferente
Outras dicas
Sim, isso é bom, mas eu gostaria de alinhar o "quando" é vertical e explicá-lo mais parecido com isto:
SELECT
CASE
WHEN @TestVal <=3 THEN 'Top 3'
WHEN @TestVal <=10 THEN 'Top 10'
WHEN @TestVAl <=25 THEN 'Top 25'
ELSE 'Other'
END
A formatação pode ser apenas uma falha de remarcação, mas a (select...)
no seu exemplo complicado que deve ser um trecho de mais simples.
SELECT
CASE
WHEN @TestVal <=3 THEN 'Top 3'
WHEN @TestVal <=10 THEN 'Top 10'
WHEN @TestVAl <=25 THEN 'Top 25'
ELSE 'Other'
END
No que diz respeito a declarações de caso de nidificação isso pode ser feito, bem como (até 10 instruções case aninhadas permitido dentro do SQL)