[英]Case When vs. Count in MySQL
I have problem with this query on MySQL. 我在MySQL上有此查询问题。
If tried this version : 如果尝试此版本:
mysql> SELECT
COUNT(*),
myCode,
myState
FROM
`tbl_2016`
WHERE
`myCode` LIKE '%XI10-2-020012%'
GROUP BY
`myState`;
The output is : 输出为:
+----------+---------------+--------------------------------+
| COUNT(*) | myCode | myState |
+----------+---------------+--------------------------------+
| 5 | XI10-2-020012 | NULL |
| 4 | XI10-2-020012 | ACTIVE |
| 1 | XI10-2-020012 | NOT ACTIVE |
+----------+---------------+--------------------------------+
2 rows in set
But if tried this other versione with CASE WHEN syntax : 但是如果尝试使用CASE WHEN语法尝试其他版本:
mysql> SELECT
myCode,
COUNT(
CASE
WHEN myState IN (
'Active'
) THEN
1
ELSE
0
END
) AS `Active`,
COUNT(
CASE
WHEN myState IN (
'Not Active'
) THEN
1
ELSE
0
END
) AS `Not Active`
FROM
`tbl_2016`
WHERE
`myCode` LIKE '%XI10-2-020012%'
GROUP BY
`myState`;
The output is different than the first version : 输出与第一个版本不同:
+---------------+--------+------------+
| myCode | Active | Not Active |
+---------------+--------+------------+
| XI10-2-020012 | 4 | 4 |
+---------------+--------+------------+
1 row in set
How to do resolve this ? 该如何解决呢?
Can you help me? 你能帮助我吗?
Thank you in advance, my code below. 预先感谢您,下面是我的代码。
在第二个版本中使用SUM而不是COUNT
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.