1

我正在寻找一个允许我“展平”具有相同 ID 的行的查询:

  • 第二列的值用作新表的列名
  • 第三列中的值确定新表中的值。

举个例子:

一张桌子看起来像这样。

ID       year     event
------------------------
Guid1    2005     A
Guid1    2010     B
Guid2    2020     C

我想让它看起来像..

ID       2005      2010     2020
Guid1    A         B        
Guid2                       C

关于如何做到这一点的任何想法?

4

1 回答 1

0

我假设 (id, year) 组合是独一无二的?否则不确定你期望什么输出。如果是唯一的,它看起来像这样:

SELECT
  id,
  MIN(IF(year = 2005, event, NULL)) AS '2005',
  MIN(IF(year = 2010, event, NULL)) AS '2010',
  MIN(IF(year = 2020, event, NULL)) AS '2020'
FROM
  t
GROUP BY
  id

以上意味着您必须在MIN(IF(...))每个所需年份重复该语句一次。SQL 无法自动执行此操作:SQL 不会混合数据和元数据。您不能在查询中动态指定列。要么使用“*”,要么指定确切的列。

于 2012-08-16T12:39:45.350 回答