我有一张这样的表:
id person_id total amount date_time
1 101 2000 2001-12-10
2 102 1000 2001-12-10
3 102 3000 2001-12-10
4 102 2000 2001-12-10
5 103 1000 2001-12-11
6 101 1000 2001-12-11
7 102 3000 2001-12-11
8 102 4000 2001-12-11
9 102 4000 2001-12-11
我希望输出类似于2001-12-11日期的输出
person_101 person_102 person_103
1000 11000 1000
我已尝试使用SUM()
功能,但我坚持使用WHERE
和JOIN
条款。
我该如何解决这个问题?
答案 0 :(得分:2)
SELECT
SUM(CASE WHEN person_id = 101 THEN total_amount ELSE 0 END) as person_101,
SUM(CASE WHEN person_id = 102 THEN total_amount ELSE 0 END) as person_102,
SUM(CASE WHEN person_id = 103 THEN total_amount ELSE 0 END) as person_103
FROM
my_table
WHERE
date_time ='2001-12-11'
答案 1 :(得分:0)
您需要透视数据,遗憾的是,这在mysql
中不是动态的,请尝试以下操作:
SELECT
SUM(IF(person_id = 101,total_amount,0)) as person_101,
SUM(IF(person_id = 102,total_amount,0)) as person_102,
SUM(IF(person_id = 103,total_amount,0)) as person_103
FROM
my_table
WHERE
date_time = '2001-12-11'
此外,您可以按日期执行此分段,只需将其放在字段列表中并按其分组:
SELECT
date_time,
SUM(IF(person_id = 101,total_amount,0)) as person_101,
SUM(IF(person_id = 102,total_amount,0)) as person_102,
SUM(IF(person_id = 103,total_amount,0)) as person_103
FROM
my_table
GROUP BY
date_time