我有一张这样的table:
Date | Name | Pick | Amount
-----------+-------+-------+-------
2018-01-01 | Alice | Apple | 2
2018-01-01 | Alice | Grape | 3
2018-01-01 | Bob | Apple | 4
2018-01-02 | Alice | Apple | 5
2018-01-02 | Bob | Grape | 6
产生如下结果的sql语句是什么?
Name | Apple | Grape | Total
------+-------+-------+------
Alice | 7 | 3 | 10
Bob | 4 | 6 | 10
5条答案
按热度按时间xfb7svmp1#
您需要条件聚合:
iq3niunx2#
2nbm6dog3#
使用
CASE
条件,这是可能的。试试这个:
eqqqjvef4#
使用聚合函数和
or
```select name,
sum(case when pick = 'Apple' then amount else 0 end) Apple,
sum(case when pick = 'Grape' then amount else 0 end) Grape,
sum(case when pick in('Apple','Grape') then amount else 0 end) Total
from tableA
group by name
2g32fytz5#
可以使用嵌套查询。一个用来计算葡萄和苹果,一个用来计算总数。优点是,您可以在一个地方计算每一列的逻辑,并且可以更直观地计算总数
小提琴