0

我有一个呼叫记录数据库,我想从中提取团队信息。它在旧的 MySQL 4.0.16 服务器上运行,因此我正在努力获取没有子查询/视图的数据,并且正在寻找正确的方向,因为我对 MySQL/PHP 还是很陌生。

源表的形式为:

callid | team   | status
---------------------------
15432  | team A | open
15433  | team B | open
15434  | team A | onhold
15435  | team A | closed
15436  | team A | closed

我想输出每个状态每个团队的呼叫次数,所以它应该如下所示:

team   | open | onhold | closed
--------------------------------
team A | 1    | 1      | 2
team B | 1    | 0      | 0

这可以在 select 语句中,也可以在使用临时表和多个查询中,因为其中任何一个都允许我使用数据来显示整体团队信息。

我已经创建了临时表,并用团队名称和零来填充等待的数量等,但是我没有提出一个更新语句,该语句将在没有子查询的情况下为每个团队添加每个状态的调用次数。在 MySQL 4.0.16 中解决这个问题的最佳方法是什么?感谢您提供任何帮助。

4

1 回答 1

1

您可以使用带有 case 表达式的聚合函数来获取所需格式的数据:

select team,
  sum(case when status = 'open' then 1 else 0 end) Open,
  sum(case when status = 'onhold' then 1 else 0 end) Onhold,
  sum(case when status = 'closed' then 1 else 0 end) Closed
from yourtable
group by team

请参阅带有演示的 SQL Fiddle

结果是:

|   TEAM | OPEN | ONHOLD | CLOSED |
-----------------------------------
| team A |    1 |      1 |      2 |
| team B |    1 |      0 |      0 |
于 2013-01-11T21:33:37.583 回答