考虑下表“视图”
user_id _date cnt
------------------------
1 2011-02-10 123
1 2011-02-11 99
1 2011-02-12 100
1 2011-02 13 12
2 2011-02-10 32
2 2011-02-11 433
2 2011-02-12 222
2 2011-02 13 334
3 2011-02-10 766
3 2011-02-11 654
3 2011-02-12 43
3 2011-02 13 27
...
100 2011-02-13 235
Run Code Online (Sandbox Code Playgroud)
如您所见,该表保存每个用户 (user_id) 每天 (_date) 的综合浏览量 (cnt)。我正在寻找一个将 user_ids 输出为列的 SELECT 查询,因此表数据将采用矩阵形式,如下所示:
_date 1 2 3 ... 100
---------------------------------
2011-02-10 123 32 766
2011-02-11 99 433 654
2011-02-12 100 222 43
2011-02-13 12 334 27 235
Run Code Online (Sandbox Code Playgroud)
这可以通过 SELECT 语句来完成吗?
如果您正在处理一组有限的用户 ID,您可以执行以下操作:
SELECT _date,
SUM(CASE WHEN _user_id = 1 THEN cnt ELSE 0 END) AS user1,
SUM(CASE WHEN _user_id = 2 THEN cnt ELSE 0 END) AS user2,
SUM(CASE WHEN _user_id = 3 THEN cnt ELSE 0 END) AS user3,
...
FROM views
GROUP BY _date
Run Code Online (Sandbox Code Playgroud)
不过,这更像是一种黑客行为,而不是一个好的查询。