我有一张名为'orders'的表格,用于记录用餐的订单ID,订购餐点的人员ID和用餐(可以是1,2或3)
orders
oid | pid | meal
________________
1 | 1 | 2
2 | 1 | 3
3 | 3 | 1
4 | 5 | 2
5 | 5 | 2
6 | 5 | 1
我想生成一个结果,让我可以查看每个pid每餐的订单数量:
pid | meal1 | meal2 | meal3
____________________________
1 | 0 | 1 | 1
3 | 1 | 0 | 0
5 | 0 | 2 | 1
我不是SQL专家,但我想我会首先按照pid分组列表,然后按用餐分组。但是我该怎么做呢?我真的输了。
答案 0 :(得分:5)
基本上你需要首先使用大小写为不同的饭菜创建多个列,然后你可以通过pid进行分组并总结出来
Select pid, sum(case when meal =1 then 1 else 0 end) as meal1,
sum(case when meal =2 then 1 else 0 end) as meal2,
sum(case when meal =3 then 1 else 0 end) as meal3
from Table
group by pid