【问题标题】:Making columns from values - MySQL从值中创建列 - MySQL
【发布时间】:2017-01-27 06:35:53
【问题描述】:

在我的桌子下面。我有一个带有值的别名列。 我正在尝试从别名创建动态列。别名是动态的,因此可以更改。

MySQL Join Multiple Rows as Columns 在这里他们有 2 个要加入的表,我只有一个。但我仍然无法让它工作。我想知道我是否真的需要准备语句。

当我使用时

SELECT GROUP_CONCAT(DISTINCT CONCAT('value AS ', alias))

我将那条查询作为列名。


ID   value    alias
1    aaa      test1
1    bbb      test2
1    ccc      test3
2    ddd      test1
2    eee      test2
2    fff      test3

来自 MySQL 查询的期望结果是:

ID    test1    test2    test3
1     aaa      bbb      ccc
2     ddd      eee      fff

有谁知道如何做到这一点?

【问题讨论】:

标签: mysql


【解决方案1】:

一个简单的数据透视查询应该在这里工作:

SELECT ID,
       MAX(CASE WHEN alias = 'test1' THEN value ELSE NULL END) AS test1,
       MAX(CASE WHEN alias = 'test2' THEN value ELSE NULL END) AS test2,
       MAX(CASE WHEN alias = 'test3' THEN value ELSE NULL END) AS test3
FROM yourTable
GROUP BY ID

【讨论】:

  • 感谢您的回答。这很酷,但别名是动态的。我将编辑我的问题。
  • @Tim van Uum:此答案中的语句将产生结果集。如果您希望这是动态的,具有不同数量的列或不同的列别名,则无法在单个 SQL 语句中动态完成。流程的动态部分,一个单独的步骤,生成要执行的 SQL 文本。
猜你喜欢
  • 2015-10-24
  • 1970-01-01
  • 1970-01-01
  • 2012-09-12
  • 2010-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-29
相关资源
最近更新 更多