我有一张如下表格
user_id | month, | value
---------+------------+--------
1 | 2013-02-01 | 1
1 | 2013-01-01 | 0
1 | 2013-03-01 | 5
2 | 2013-02-01 | 1
据推测,user_id
不能与month
不止一个。{/ p>
假设我可以在查询语句中查询要查询的月份。如下所示
SELECT user_id, (bla bla bla) AS '2013-03-01', (bla bla bla) AS '2013-02-01'
如何以最少的查询和后期处理(例如使用python或php)获得如下结果?
user_id | 2013-03-01 | 2013-02-01 | 2013-01-01
---------+------------+------------+------------
1 | 5 | 1 | 0
2 | NULL | 1 | NULL
答案 0 :(得分:3)
您可以使用条件聚合来获取所需的结果集:
SELECT user_id,
MAX(CASE WHEN month = '2013-03-01' THEN value END) AS '2013-03-01',
MAX(CASE WHEN month = '2013-02-01' THEN value END) AS '2013-02-01',
MAX(CASE WHEN month = '2013-01-01' THEN value END) AS '2013-01-01'
FROM mytable
GROUP BY user_id
只要有{em>预定义的一组month
值,这就可以正常工作。否则你必须使用动态SQL。