SQLShack (Español)

la instrucción CASE de SQL Server es equivalente a la instrucción IF-THEN en Excel.

la instrucción CASE se utiliza para implementar la lógica en la que desea establecer el valor de una columna en función de los valores de otras columnas.

la sentencia CASE de SQL Server consta de al menos un par de sentencias WHEN Y THEN. La instrucción WHEN especifica la condición a probar. La instrucción THEN especifica la acción si la condición WHEN devuelve TRUE.,

la instrucción ELSE es opcional y se ejecuta cuando ninguna de las condiciones WHEN devuelve true. La sentencia CASE termina con una palabra clave END.

en este artículo, vamos a echar un vistazo a una serie de diferentes ejemplos de la declaración de caso. Pero antes de hacer eso, vamos a crear algunos datos ficticios para trabajar con.,/td>

crear ShowRoom de base de datos;
ir
usar ShowRoom;
crear autos de mesa
(
id INT,
nombre VARCHAR(50) no nulo,
Company varchar(50) not null,
Power int not null,
color varchar(50) not null,
model int not null,
condition varchar(50) not null
)

el script anterior ha creado una base de datos ficticia llamada showroom con una tabla llamada cars., La tabla Cars tiene siete columnas: id, Nombre, compañía, potencia, color, modelo y condición.

Ahora vamos a insertar algunos datos ficticios en la tabla Cars., Ejecute la siguiente secuencia de comandos:

Vamos a ver cómo nuestro conjunto de datos se ve, ejecute la siguiente secuencia de comandos:

1
SELECCIONE * DE Coches

El resultado se parece a esto:

Usted puede ver que la columna condición contiene una X en cada fila por el momento., Estableceremos el valor de la columna Condición, dependiendo de la columna modelo, usando la instrucción CASE para que pueda ver claramente lo que está sucediendo.,

The syntax of the CASE statement is pretty straight forward:

1
2
3
4
5

SELECT column1,
column2,
CASE WHEN CONDITION THEN ‘Value1’
ELSE ‘Value2’ END AS columnX
FROM Cars

The CASE statement has to be included inside the SELECT Statement., Comienza con la palabra clave CASE seguida de la palabra clave WHEN Y luego la condición.

la condición puede ser cualquier expresión válida de SQL Server que devuelva un valor booleano. Por ejemplo, la condición puede ser model > 2000, la cláusula THEN se usa después de la condición. Si la condición devuelve true, el valor que sigue a la cláusula THEN se almacena en columnX. Else, el valor después de la cláusula ELSE, también se almacenará en columnX. La instrucción CASE de SQL Server termina con la cláusula END.,

ejemplos de sentencias CASE

veamos ahora la sentencia CASE en acción.

en una sección anterior, creamos una tabla llamada Cars dentro de la base de datos de ShowRoom.

la columna Condición tenía el valor X para todas las filas. Usaremos la instrucción CASE de SQL Server para establecer el valor de la columna condition en «New» si la columna model tiene un valor mayor que 2000, de lo contrario el valor de la columna condition se establecerá en «Old».,ok at the following script:

1
2
3
4
5

SELECT name,
model,
CASE WHEN model > 2000 THEN ‘New’
ELSE ‘Old’ END AS condition
FROM Cars

The above script displays the name, model and condition columns from the Cars table., La salida del script anterior se ve así:

puede ver que el valor de X en la columna Condición ha sido reemplazado por» nuevo «y» viejo » dependiendo del modelo del automóvil.

múltiples condiciones en la instrucción CASE

puede evaluar múltiples condiciones en la instrucción CASE.,

escribamos una sentencia CASE de SQL Server que establezca el valor de la columna condition en «New» si el valor en la columna model es mayor que 2010, en «Average» si el valor en la columna model es mayor que 2000, y en » Old » si el valor en la columna model es mayor que 1990.,

seleccione Nombre,
modelo,
caso cuando modelo > 2010 entonces ‘Nuevo’
cuando modelo > 2000 Entonces ‘promedio’
cuando modelo > div> 1990 then ‘Old’
else ‘old’ end as condition
from cars

la salida del script anterior se ve así:

en el script anterior, asignamos tres valores diferentes a la columna Condición dependiendo del valor en la columna modelo.,

sin embargo, en el script anterior, las condiciones se superponen como. el modelo con un valor mayor que 2010 también tiene un valor mayor que 2000 y 1990. Una mejor manera de implementar múltiples condiciones es usar operadores lógicos como AND, OR, NOT, etc.,N model > 2010 THEN ‘New’

WHEN model > 2000 AND model <2010 THEN ‘Average’
WHEN model > 1990 and model <2000 then ‘Old’
else ‘Old’ end as condition
from cars

la salida del script anterior se ve así:

También podemos evaluar múltiples condiciones de diferentes columnas utilizando la instrucción Case de SQL Server., En el siguiente ejemplo, asignaremos el valor de «nuevo blanco» a la columna condición donde el modelo es mayor que 2010 y el color es blanco.,HEN ‘New’

WHEN model > 2000 and model <2010 THEN ‘Average’
WHEN model > 1990 AND model <2000 then ‘Old’
else ‘Old’ end as condition

from cars

la salida se ve así:

puede ver en la fila 5 que, dado que el color es blanco y el modelo es mayor que 2010, el valor de la columna condición se ha establecido en «nuevo blanco» en la salida.,

usando GROUP BY con la instrucción CASE de SQL Server

la instrucción CASE también se puede usar junto con la instrucción GROUP BY para aplicar funciones aggregate.,v id=»1dd7e33b85″>

1
2
3
4
5
6
7
select
case when model > 2000 then ‘new’
else ‘old’ end as condition,
count(1) as count
from cars
group by case when model > 2000 then ‘new’
else ‘old’ end

en el script anterior usamos la función COUNT aggregate con la instrucción CASE.,

la instrucción CASE de SQL Server establece el valor de la columna condition en » New «O»Old». Dentro de la cláusula GROUP BY, especificamos que el recuento correspondiente para «nuevo» se incrementa en 1, siempre que se encuentre un valor de modelo mayor que 2000. La sección Else significa que aumentamos la cuenta para «Viejo» por 1 si el valor del modelo es 2000 o menos. La salida del script anterior se ve así:

dado que nuestro conjunto de datos tiene cinco vehículos con un valor para ‘modelo’ mayor que 2000, puede ver un 5 en la columna count para vehículos «nuevos»., Del mismo modo, teníamos 5 vehículos viejos y por lo tanto podemos ver 5 para la columna de conteo de vehículos «viejos».

del mismo modo, podemos agrupar por más de dos valores., 2000 Entonces ‘promedio’

cuando el modelo > 1990 entonces ‘Viejo’
ELSE ‘Viejo’ final como condición,
cuenta(1) como cuenta
De Coches
grupo por caso cuando el modelo > 2010 luego ‘nuevo’
cuando el modelo > 2000 luego ‘promedio’
cuando el modelo > 1990 luego ‘viejo’
else ‘viejo’ end

en el script anterior, agrupamos los datos en tres categorías: «nuevo», «promedio» y «viejo».,

la salida se ve así:

puede ver el recuento de los coches de Condición» Nuevo»,» promedio «y» viejo».

conclusión

la instrucción CASE es útil cuando desea implementar la lógica IF-THEN en SQL Server. En este artículo, vimos lo que es la sentencia CASE junto con su sintaxis. También vimos diferentes ejemplos de sentencia CASE junto con su uso con la cláusula GROUP BY.,

otros excelentes artículos de Ben

  • comprensión de SQL Server query plan cache
  • ¿Cuál es la diferencia entre los índices agrupados y no agrupados en SQL Server?
  • Cómo utilizar las funciones de la ventana
  • la Consulta de datos utilizando SQL Server CASO de declaración
  • Autor
  • mensajes Recientes
Ben Richardson se ejecuta la Agudeza de Formación de un proveedor líder de capacitación en SQL el reino unido., Ofrece una gama completa de capacitación SQL, desde cursos introductorios hasta Capacitación Avanzada en Administración y almacenamiento de datos; consulte aquí para obtener más detalles. Acuity tiene oficinas en Londres y Guildford, Surrey., Él también blogs de vez en cuando en la Agudeza del blog
Ver todos los mensajes de Ben Richardson

Últimas entradas por Ben Richardson (ver todos)
  • Potencia BI: Gráficos en Cascada y se Combina efectos Visuales – 19 de enero de 2021
  • Potencia BI: formato Condicional y los datos de los colores en la acción – 14 de enero de 2021
  • Potencia BI: Importación de datos de SQL Server y MySQL – 12 de enero de 2021

Share

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *