Cuando dentro de múltiples sin expresión CASE en SQL?
Pregunta
DECLARE @TestVal int
SET @TestVal = 5
SELECT
CASE
WHEN @TestVal <=3 THEN 'Top 3'
ELSE 'Other'
END
vi este código de ejemplo en línea, pero no pude encontrar un ejemplo en el que no había expresión y tenía más de uno cuando, por lo que estoy preguntando si este tipo de cosas está bien:
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
¿O tengo que decir CASO CUANDO para cada línea?
Solución
Caso toma la siguiente forma
CASE WHEN Condition THEN Result
WHEN Condition2 THEN Result2
ELSE Default
END
Editar
Esto asume sus utilizando Microsoft SQL Server otros DBMS puede ser diferente
Otros consejos
Sí, está bien, pero me gustaría alinear el "cuándo" S verticalmente y explicarlo más a esto:
SELECT
CASE
WHEN @TestVal <=3 THEN 'Top 3'
WHEN @TestVal <=10 THEN 'Top 10'
WHEN @TestVAl <=25 THEN 'Top 25'
ELSE 'Other'
END
El formato podría ser un fallo de rebajas, pero la (select...)
en su ejemplo complicado lo que debe ser un fragmento simple.
SELECT
CASE
WHEN @TestVal <=3 THEN 'Top 3'
WHEN @TestVal <=10 THEN 'Top 10'
WHEN @TestVAl <=25 THEN 'Top 25'
ELSE 'Other'
END
En lo que respecta a los estados de casos de anidación esto se puede hacer también (hasta 10 declaraciones anidado de casos permitidos dentro de sql)