我真的是sql查询的新手,我有1个问题。详细信息如下:
我有一张桌子:
user_table
user_id username balance date_updated
------------------------------------------
1 adam 100 09/10/2017
2 david 100 09/10/2017
1 adam 110 10/10/2017
2 david 120 10/10/2017
1 adam 100 11/10/2017
2 david 100 11/10/2017
1 adam 110 12/10/2017
2 david 120 12/10/2017
我想获取2017年9月10日和2017年12月10日的余额
预期结果:
username first_date second_date
------------------------------------
adam 100 110
david 100 120
提前谢谢!
答案 0 :(得分:1)
使用条件聚合
SELECT
username,
MAX(CASE WHEN date_updated = '2017-10-09' THEN balance END) AS first_date,
MAX(CASE WHEN date_updated = '2017-10-12' THEN balance END) AS second_date
FROM user_table
GROUP BY username
答案 1 :(得分:0)
使用汇总功能时的用例
select username,
sum(case when date_updated='9/10/2017' then balance else 0 end) as first_date,
sum(case when date_updated='12/10/2017' then balance else 0 end) as second_date
from user_table t
group by username
我在这里更喜欢sum()
而不是max()
,因为如果在特定日期总和上可供用户使用的更多行将覆盖