MySQL 4.0.16无子查询更新表
我有一个呼叫记录数据库,我想从中提取团队信息。它运行在一台旧的MySQL 4.0.16服务器上,因此我很难在没有子查询/视图的情况下获取数据,并且正在寻找一个正确的方向,因为我还是MySQL/PHP新手 源表的格式为:MySQL 4.0.16无子查询更新表,mysql,sql,pivot,Mysql,Sql,Pivot,我有一个呼叫记录数据库,我想从中提取团队信息。它运行在一台旧的MySQL 4.0.16服务器上,因此我很难在没有子查询/视图的情况下获取数据,并且正在寻找一个正确的方向,因为我还是MySQL/PHP新手 源表的格式为: callid | team | status --------------------------- 15432 | team A | open 15433 | team B | open 15434 | team A | onhold 15435 | team A
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语句,也可以是使用临时表和多个查询的语句,因为其中任何一个都允许我使用数据显示整个团队信息
我已经创建了temp表,并用团队名称和onhold等数字的零来填充它,但是我没有找到一个update语句,该语句将在没有子查询的情况下添加每个团队每个状态的呼叫数。在MySQL 4.0.16中实现这一点的最佳方式是什么?感谢您提供的任何帮助。您可以使用带有大小写表达式的聚合函数以所需格式获取数据:
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
看
结果是:
| TEAM | OPEN | ONHOLD | CLOSED |
-----------------------------------
| team A | 1 | 1 | 2 |
| team B | 1 | 0 | 0 |
打败我!我会将条件快捷方式设置为
sum(status='open')
,因为MySQL将返回1或0进行比较,但您的版本可能更便于移植。非常感谢BlueFoots和TheVedge-它在SQL查询编辑器中提供了我需要的数据,所以现在可以通过PHP将其转换为Google图表表可视化,这样看起来很好。我觉得我太专注于我创建的临时表,并试图让它以这种方式工作,而这要简单得多。再次感谢@Roboto先生很乐意帮忙。:)可能重复的