显示2个不同日期的数据

时间:2018-10-16 06:22:45

标签: mysql sql

我真的是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

提前谢谢!

2 个答案:

答案 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(),因为如果在特定日期总和上可供用户使用的更多行将覆盖