2011-10-10 62 views
1

我有一个名为temp的表。列是ID,电话公司,简码,热键。group by同列其中多个条件使用相同的列输入

id telco shortcode hotkey 
1 asdf 123  ib 
2 gra  123  sb 
3 cc  123  sb 
4 bl  123  ibb 

使用MySQL查询我想输出计数(短码)组由电信其中热键IB短码123和 计数(短码)组由电信其中如果我使用热键SB短码123

telco ib   sb 
asdf  1   0 
gra  0   1 
cc  0   1 
bl  1   0 

的下面的查询

SELECT COUNT(`shortcode`) WHERE `hotkey` = 'ib' AND `shortcode` = 123 
SELECT COUNT(`shortcode`) WHERE `hotkey` = 'sb' AND `shortcode` = 123 

然后我通过以下方式走出

telco ib   

asdf  1   
gra  0   
cc  0   
bl  1  

telco sb 

asdf  1   
gra  0   
cc  0   
bl  1 

,但我不希望这个

回答

1

要使用和情况类似

Select 
     Telco, 
     Sum ( Case when hotkey = 'ib' then 1 else 0 end) as ib, 
     Sum ( Case when hotkey = 'sb' then 1 else 0 end) as sb 
From 
     Yourtable 
Group By 
    Telco 

注意当前的Oracle版本的SQL SERVER必须使用枢轴语法

+0

给出错误功能pushpull.sum不存在 – salma

+0

我写“Then”时写了“Theb”。我解决了这个问题,但你得到的错误很奇怪。我不确定是什么原因造成的。也许你应该确保一切都逃脱,并开始只有一个SUM/CASE语句 –

+0

谢谢老板的工作。很多谢谢 – salma

0

你很可能它已经,只需要抛出SELECT中,不要担心GROUP BY位。

SELECT COUNT(`shortcode`) WHERE `hotkey` = 'ib' AND `shortcode` = 123 
SELECT COUNT(`shortcode`) WHERE `hotkey` = 'sb' AND `shortcode` = 123 

首先会给你多少行的热键为“IB”和简码为123,第二个用热键为“SB”和简码为123

+0

我知道它的选项,但如何显示输出需要我的格式。我想写上面的格式输出的MySQL查询,输出 – salma

+0

可能要澄清,在问题中。而不是COUNT(短代码),您可以将其更改为选择telco,然后循环并显示每个查询。 – jprofitt

+0

显示每个查询然后电信节目每次,像下面电信IB ASDF 1 GRA 0 CC 0 BL 1和电信SB ASDF 0, GRA 1,CC 1 B1 0,但我想只显示一个电信名为每个查询。 – salma

相关问题