虽然标题表明它已经被回答了,但我尝试了所有的建议,但是在我的情况下无法做到:
我有一个包含2列的表,包含周数的Week,以及在这几周内保存活动类型的Worktype。有两种类型的活动(调试,集成),每周可以有几个条目。 典型地:
+------+-------------+
| week | worktype |
+------+-------------+
| 12 | debug |
| 12 | debug |
| 12 | debug |
| 12 | integration |
| 12 | debug |
| 12 | debug |
| 12 | debug |
| 12 | debug |
| 12 | debug |
| 12 | debug |
| 12 | integration |
| 12 | debug |
| 12 | debug |
+------+-------------+
我想每周都展示出“整合”的数量。 我试过了
Select
{一周{1}} {worktype {1}} {worktype {1}}
它可以在几周内正常工作,但不会为其他人显示任何内容(没有显示任何集成的周数)。
我尝试使用, count(
worktype ) from xxx where
但在这种情况下没有帮助,因为结果永远不会为NULL,因此coalesce永远不会将其替换为零。
试过="integration"
这对......没有帮助......
有什么建议吗?
谢谢, 雅克
答案 0 :(得分:1)
您可以对在IF中计算的字段执行SUM: -
SELECT week, SUM(IF(worktype="debug", 1, 0)) AS Debug_Count, SUM(IF(worktype="integration", 1, 0)) AS Integration_Count
FROM xxx
GROUP BY week
或者只为您关心的工作类型获取一个列,并避免使用IF: -
SELECT Sub1.week, COUNT(xxx.worktype)
FROM (SELECT DISTINCT week
FROM xxx) Sub1
LEFT OUTER JOIN xxx
ON Sub1.week = xxx.week
AND xxx.worktype = "integration"
GROUP BY week