用户的不同属性的总和

时间:2013-06-18 00:47:25

标签: sql

假设我的数据库是

id visit

用户可以访问A或B.所以有些数据可能是

1 A
1 B
1 B
2 A
3 B
2 B
3 B

我想要

id A B
1  1 2
2  1 1
3  0 2

我该怎么做?

3 个答案:

答案 0 :(得分:1)

这样做的正确方法是简单的聚合:

select id,
       sum(case when visit = 'A' then 1 else 0 end) as A,
       sum(case when visit = 'B' then 1 else 0 end) as B
from t
group by id

答案 1 :(得分:0)

这将在SQL Server上执行。

enter image description here

这真的很奇怪,但是stackoverflow不会让我发布那个查询,所以我不得不发布一个屏幕抓取。

答案 2 :(得分:0)

我会使用类似的东西:

SELECT v.user_id, 
    (SELECT COUNT(*) FROM visit vv WHERE vv.user_id = v.user_id AND vv.loc = 'A') as visitA, 
    (SELECT COUNT(*) FROM visit vv WHERE vv.user_id = v.user_id AND vv.loc = 'B') as visitB
FROM visit v
GROUP BY v.user_id

假设该表名为visit,字段为“user_id”和“loc”。