MySQL查询结果行转列?

如何对Group By查询的结果进行转列?

SELECT uid, level, count(uid) as counter
FROM user_log
GROUP BY uid, level;
+-------+----------+---------+
|   uid |  level   | counter |
+-------+----------+---------+
|   101 | 2        | 1890    |
|   101 | 1        |  230    |
|   102 | 2        |  430    |
|   102 | 1        |  30     |
+-------+----------+---------+

期待如下的展示方式

+-------+----------+---------+
|   uid |  cunter1 | counter2|
+-------+----------+---------+
|   101 |  230     | 1890    |
|   102 |  30      |  430    |
+-------+----------+---------+
阅读 4.6k
2 个回答
SELECT 
uid,
counter AS counter1 ,
MAX(counter) AS counter2 
FROM (
  SELECT 
    uid,
    `level`, 
    COUNT(uid) AS counter
  FROM user_log
  GROUP BY uid, `level` ORDER BY `level`
)AS t 
GROUP BY uid;

模拟数据演示

以uid分组就好了 group by uid sql就不写了。。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题