group by same列,其中多个条件使用相同的列输入

时间:2011-10-10 19:45:58

标签: php mysql

我有一张名为temp的表。列是id,telco,shortcode,hotkey。

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

使用mysql查询我希望输出计数(短代码)组由telco在哪里热键ib短代码123和 count(shortcode)group by telco where hotkey sb shortcode 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  

但我不想要这个

2 个答案:

答案 0 :(得分: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可以选择使用pivot语法

答案 1 :(得分: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.