2015-09-15 50 views
-1

我试图做一个查询我的MySQL数据库SQL组由不同的值

我有

 
Field 1 | Field 2 | url 
v1  | Value01 | http:1 
v1  | Value02 | http:2 
v2  | Value02 | http:3 
v3  | Value01 | http:4 
v3  | Value02 | http:5 
v2  | Value02 | http:6 

我尝试从数场2的值时,他们被重复 所有字段分组1

我希望这

 
Field 1 | count Value01(from Field 2)|count Value02(from Field 2) 
v1  | 1       | 1 
v2  | 0       | 2 
v3  | 1       | 1 

是想办法做那样的事情吗?

+0

对于您的输入,您的愿望输出是'v1 | 1 | 1',因为'v1'只有一个'Value01'和一个'Value02'? –

+0

你能举一个更清晰的例子吗?我不明白你想要实现什么 –

+0

是的胡娟你是对的 – msidelnik

回答

0

您使用条件COUNTSUM

  • 可以删除ELSE NULL因为是CASE默认的回报,但我把它给了读数清晰。

SELECT 
    Field1, 
    COUNT(CASE 
      WHEN Field2 = 'Value01' THEN 1 
      ELSE NULL 
      END) as count_Value01, 
    SUM (CASE 
      WHEN Field2 = 'Value02' THEN 1 
      ELSE 0 
      END) as count_Value02 
FROM yourTable 
GROUP BY Field1 
+0

谢谢! 我想是:当Field2 ='Value01'**然后** 1而不是** = ** – msidelnik

+0

您是对的。固定 –

0

您可以使用条件聚合来做到这一点。这在MySQL中特别简单:

select field1, sum(field2 = 'Value1') as NumValue01, 
     sum(field2 = 'Value02') as NumValue2 
from table t 
group by field1;