MariaDB 使用唯一过滤器从行到列查询

问题描述 投票:0回答:1

我正在尝试将某些行转换为单个表中的列,但无法正常工作。 :(

这是我的简单 MariaDB 表,名为 runningtimes:

所以我尝试了各种方法,包括枢轴或聚合,但我总是遇到错误或没有得到所需的输出。

我正在寻找的是这样的:

列标题应包含行值,最终结果应有一个过滤器,仅显示每个跑步者的最快时间。

如有任何帮助,我们将不胜感激。

filter mariadb pivot row multiple-columns
1个回答
0
投票

由于您没有发布您遇到的错误或您迄今为止尝试过的代码示例,我只能假设您一定遇到了列名称中特殊字符的问题。

我可以帮助您旋转桌子。在您的情况下,您需要对列名称使用 (`) 反引号。

因此数据透视表代码将如下所示:

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

© www.soinside.com 2019 - 2024. All rights reserved.