我有个老兄。
我有这样的选择:
SELECT
ES.id,
ES.nombre nombreEstacion,
COUNT(LE.id) Cuenta
FROM estacion ES
LEFT JOIN lectura LE ON ES.id = LE.idEstacion
LEFT JOIN tipo_estacion AS TE ON TE.id=ES.idTipoEstacion
WHERE
ES.eliminada=0
AND LE.resultadoNOK=0
OR LE.idEstacion IS NULL
GROUP BY ES.id
ID NAMEESTATION COUNT
我想用这种颜色做一个选择: ID NAME COUNT1 COUNT2 COUNT3在同一个选择中。
这个计数具有相同的结构。他们只有一点不同。
count1 is when (WHERE LE.resultadoNOK=0)
count2 is when (WHERE LE.resultadoNOK=1)
count3 is when (WHERE LE.resultadoNOK=3)
有些人告诉我,解决方案是使用这样的东西: COUNT(LE.id)Cuenta, SUM(IF(X,X,X)COUNT2, SUM(IF(X,X,X)COUNT3
但我不明白这个结构,我不明白我必须在" IF"中写出什么价值。
我用" CASE"搜索另一个可能性。 ,买我不太明白
有人可以解释我这是怎么运作的吗?
谢谢你们! :)
答案 0 :(得分:0)
当然,您可以使用SUM和案例表达来完成此操作。
SELECT
ES.id,
ES.nombre nombreEstacion,
SUM(case when LE.resultadoNOK = 0 then 1 end) as CuentaUno,
SUM(case when LE.resultadoNOK = 1 then 1 end) as CuentaDos,
SUM(case when LE.resultadoNOK = 2 then 1 end) as CuentaTres
FROM estacion ES
LEFT JOIN lectura LE ON ES.id = LE.idEstacion
LEFT JOIN tipo_estacion AS TE ON TE.id=ES.idTipoEstacion
WHERE
ES.eliminada=0
AND LE.idEstacion IS NULL
GROUP BY ES.id
, ES.nombre
答案 1 :(得分:0)
我会像这样使用 CASE 语句:
SELECT
ES.id,
ES.nombre nombreEstacion,
COUNT(LE.id) Cuenta,
SUM(CASE WHEN LE.resultadoNOK = 0 THEN 1 ELSE 0 END) AS COUNT1,
SUM(CASE WHEN LE.resultadoNOK = 1 THEN 1 ELSE 0 END) AS COUNT2,
SUM(CASE WHEN LE.resultadoNOK = 3 THEN 1 ELSE 0 END) AS COUNT3
FROM estacion ES
LEFT JOIN lectura LE ON ES.id = LE.idEstacion
LEFT JOIN tipo_estacion AS TE ON TE.id=ES.idTipoEstacion
WHERE
ES.eliminada=0
AND LE.resultadoNOK=0
OR LE.idEstacion IS NULL
GROUP BY ES.id