首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MySql中枢轴表?

如何在MySql中枢轴表?
EN

Stack Overflow用户
提问于 2022-05-18 23:17:22
回答 1查看 545关注 0票数 1

我在附图的屏幕上画了一张桌子:

并提供了以下数据:

如您所见,它包含行中的所有字段(value,column_id - is字段类型)。每个字段都有位置的line_indexcolumn_index以及column_id

我想要返回所有字段名的行,例如:

代码语言:javascript
复制
line_index column_id_1  column_name1 column_id_2   column_name2   column_id_3   column_name3  
0          1             Age           2            Vasile         3              NY

更简单地说,我需要将所有字段(行)构建为列,然后再构建回行。

我应该使用Pivot吗?是否可以在MySQL中使用?

链接到木琴

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-19 05:43:42

您需要按line_index对结果进行分组,并有条件地将行转换为列。

代码语言:javascript
复制
SELECT l.line_index, 
MAX(CASE WHEN ct.column_name = "NAME" THEN l.value ELSE NULL END) AS "NAME" ,
MAX(CASE WHEN ct.column_name = "AGE" THEN l.value ELSE NULL END) AS "AGE" ,
MAX(CASE WHEN ct.column_name = "ZUP" THEN l.value ELSE NULL END) AS "ZUP" 
FROM columns_types ct 
LEFT JOIN `lines` l ON l.column_id = ct.column_id
GROUP BY l.line_index;

在这里试试。此外,我在您的模式中做了一些更改,我认为这些更改不会影响存储在表中的数据。您正在columns_types表中添加冗余行(可能)。通过查看查询,您知道必须为每个列构建一个MAX(CASE语句,所以最好先获取它,然后用某种编程语言构建最终的查询。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72296957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档