Tabla de contenido
Dos formatos de CASE: función CASE simple y función de búsqueda CASE
Al mismo tiempo con el uso de los métodos SUM y COUNT
La declaración de la función CASE WHEN implementa dos formatos: la función CASE simple y la función de búsqueda CASE.
Al mismo tiempo con el uso de los métodos SUM y COUNT
Dos formatos de CASE: función CASE simple y función de búsqueda CASE
**简单CASE函数**
CASE 条件参数名称
WHEN 参数值1 THEN '显示值1'
WHEN 参数值2 THEN '显示值2'
...
ELSE '显示其他值' END
**CASE搜索函数**
CASE
WHEN 条件参数名称 = '参数值1' THEN '显示值1'
WHEN 条件参数名称 = '参数值2' THEN '显示值2'
...
ELSE '显示其他值' END
Ejemplo de dos formatos:
estado: estado
número de pedido: orderId
**简单CASE函数**
SELECT
orderId,
CASE state
WHEN 1 THEN '启动'
WHEN 2 THEN '关闭'
ELSE '未知状态' END AS statusName
FROM t_table
**CASE搜索函数**
SELECT
orderId,
CASE
WHEN state = '1' THEN '启动'
WHEN state = '2' THEN '关闭'
ELSE '未知状态' END AS stateName
FROM t_table
Estos dos formatos pueden lograr la misma función. Sin embargo, en comparación con la función de búsqueda CASE, la función CASE simple tiene algunas limitaciones en términos de funcionalidad;
Por ejemplo, escribe un juicio :
SELECT
orderId,
CASE
WHEN state = '1' THEN '启动'
WHEN state = '2' THEN '关闭'
WHEN state IN ('3', '4') THEN '待解锁'
ELSE '未知状态' END AS stateName
FROM t_table
Si es múltiple, se ignorará la coincidencia del valor en la condición IN de CUANDO y la condición del siguiente CUÁNDO , como por ejemplo, se ignorará el siguiente estado "cerrado", y nunca se obtendrá "cerrado".
SELECT
orderId,
CASE
WHEN state = '1' THEN '启动'
WHEN state IN ('2', '3', '4') THEN '待解锁'
WHEN state = '2' THEN '关闭'
ELSE '未知状态' END AS stateName
FROM t_table
Al mismo tiempo con el uso de los métodos SUM y COUNT
① Función SUMA
**简单CASE函数**
SUM(CASE 条件参数名称
WHEN 参数值 THEN '显示被求和值'
ELSE 0 END
) AS SUMAMT
**CASE搜索函数**
SUM(CASE
WHEN 条件参数名称 = '参数值' THEN '显示被求和值'
ELSE 0 END
) AS SUMAMT
**或者**
SUM(CASE
WHEN
条件参数名称1 = '参数值1' AND 条件参数名称2 = '参数值2' ...
THEN '显示被求和值'
ELSE 0 END
) AS SUMAMT
**或者**
SUM(CASE
WHEN
条件参数名称1 IN ('参数值n') AND 条件参数名称2 = '参数值2' ...
THEN '显示被求和值'
ELSE 0 END
) AS SUMAMT
Ejemplo: consultar valores según las condiciones de tiempo, mostrar "valor sumado" cuando hay un valor y mostrar
estado "nulo" cuando no hay valor: tipo de estado : t_type cantidad: amt
**简单CASE函数**
SELECT
SUM(CASE state
WHEN 1 THEN amt
ELSE 0 END
) AS sumAmt
FROM
t_table
WHERE
core_time >= '2020-07-01 00:00:00'
AND core_time <= '2020-07-20 23:59:59'
GROUP BY core_time
**CASE搜索函数**
SELECT
SUM(CASE
WHEN state = '1' THEN amt
ELSE 0 END
) AS sumAmt
FROM
t_table
WHERE
core_time >= '2020-07-01 00:00:00'
AND core_time <= '2020-07-20 23:59:59'
GROUP BY core_time
**或者**
SELECT
SUM(CASE
WHEN state = '1' AND t_type = '2' THEN amt
ELSE 0 END
) AS sumAmt
FROM
t_table
WHERE
core_time >= '2020-07-01 00:00:00'
AND core_time <= '2020-07-20 23:59:59'
GROUP BY core_time
**或者**
SELECT
SUM(CASE
WHEN state IN ('2', '3', '4') AND t_type = '2' THEN amt
ELSE 0 END
) AS sumAmt
FROM
t_table
WHERE
core_time >= '2020-07-01 00:00:00'
AND core_time <= '2020-07-20 23:59:59'
GROUP BY core_time
② Función CONTAR
**简单CASE函数**
COUNT(CASE 条件参数名称
WHEN 参数值 THEN 1
ELSE 0 END
) AS COUNTAMT
**CASE搜索函数**
COUNT(CASE
WHEN 条件参数名称 = '参数值' THEN 1
ELSE 0 END
) AS COUNTAMT
**或者**
COUNT(CASE
WHEN
条件参数名称1 = '参数值1' AND 条件参数名称2 = '参数值2' ...
THEN 1
ELSE 0 END
) AS COUNTAMT
**或者**
COUNT(CASE
WHEN
条件参数名称1 IN ('参数值n') AND 条件参数名称2 = '参数值2' ...
THEN 1
ELSE 0 END
) AS COUNTAMT
Ejemplo: consulta el valor de acuerdo con la condición de tiempo, si hay un valor, mostrará "valor total", si no hay valor, mostrará "0"
estado: estado
tipo: t_type
cantidad: amt
**简单CASE函数**
SELECT
COUNT(CASE state
WHEN 1 THEN 1
ELSE 0 END
) AS countAmt
FROM
t_table
WHERE
core_time >= '2020-07-01 00:00:00'
AND core_time <= '2020-07-20 23:59:59'
GROUP BY core_time
**CASE搜索函数**
SELECT
COUNT(CASE
WHEN state = '1' THEN 1
ELSE 0 END
) AS countAmt
FROM
t_table
WHERE
core_time >= '2020-07-01 00:00:00'
AND core_time <= '2020-07-20 23:59:59'
GROUP BY core_time
**或者**
SELECT
COUNT(CASE
WHEN state = '1' AND t_type = '2' THEN 1
ELSE 0 END
) AS countAmt
FROM
t_table
WHERE
core_time >= '2020-07-01 00:00:00'
AND core_time <= '2020-07-20 23:59:59'
GROUP BY core_time
**或者**
SELECT
COUNT(CASE
WHEN state IN ('2', '3', '4') AND t_type = '2' THEN 1
ELSE 0 END
) AS countAmt
FROM
t_table
WHERE
core_time >= '2020-07-01 00:00:00'
AND core_time <= '2020-07-20 23:59:59'
GROUP BY core_time
Dudulu~
Autor original: Explorer_S