假设我的数据库是
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
我该怎么做?
答案 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上执行。
这真的很奇怪,但是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”。