我正在尝试将某些行转换为单个表中的列,但无法正常工作。 :(
这是我的简单 MariaDB 表,名为 runningtimes:
所以我尝试了各种方法,包括枢轴或聚合,但我总是遇到错误或没有得到所需的输出。
我正在寻找的是这样的:
列标题应包含行值,最终结果应有一个过滤器,仅显示每个跑步者的最快时间。
如有任何帮助,我们将不胜感激。
由于您没有发布您遇到的错误或您迄今为止尝试过的代码示例,我只能假设您一定遇到了列名称中特殊字符的问题。
我可以帮助您旋转桌子。在您的情况下,您需要对列名称使用 (`) 反引号。
因此数据透视表代码将如下所示:
Select
entry_id,
(case when meta_key = "name-1" then meta_value end) as `name-1`,
max(case when meta_key = "name-2" then meta_value end) as `name-2`,
max(case when meta_key = "select-1" then meta_value end) as `select-1`,
max(case when meta_key = "select-2" then meta_value end) as `select-2`,
min(case when meta_key = "text-1" then meta_value end) as `text-1`
from runningtimes
group by entry_id , "name-1", "text-1"
然后在select语句中使用where子句来过滤仅来自伦敦的数据:
Select * from runningtimes_Pivot where `select-2` = "London"
带有过滤器数据的代码:https://dbfiddle.uk/cOn9XHyA