我有这样的表数据

index  user  date   rank
  11     a    1Mar    23
  12     b    1Mar    16
  13     a    2Mar    24
  14     b    2Mar    18


我想通过查询实现以下内容:

    1Mar   2Mar
a   23     24
b   16     18


我不知道这是否可以通过命令行中的单个语句来完成,或者是否必须通过表单和一些脚本来完成。通过脚本可以做到,但看不到如何在单个语句中完成。

最佳答案

如果您知道日期的所有可能值,则可以像下面这样进行数据透视
或者您需要使用动态sql。

SELECT user,
       MAX( CASE WHEN date ='1Mar' THEN rank else NULL end) AS '1Mar',
       MAX( CASE WHEN date ='2Mar' THEN rank else NULL end) AS '2Mar'
FROM Table1
GROUP BY user

关于mysql - 创建MySQL的列和行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26458207/

10-08 20:46