mysql - SQL/Knime - 带 "Group By"的转置表

标签 mysql sql pivot knime

标题很糟糕,但这是我能做的最好的。我有的是这样的:

Country  Tag    Weight
-----------------------
1        1      20
1        2      30
1        3      77
2        1      10
2        2      11
2        3      100

或者,以人类可读的形式:

Country  Tag    Weight
-----------------------
USA      Rock   20
USA      Pop    30
USA      Metal  77
Spain    Rock   10
Spain    Pop    11
Spain    Metal  100

使用 SQL(创建 View )或 Knime 中的数据操作工具,我需要将数据操作成这种形式:

Country  Rock   Pop   Metal
----------------------------
USA      20     30    77
Spain    10     11    100

本质上,标签条目(唯一的)成为列,国家(唯一的)成为行 ID,权重值与其国家/标签保持一致。

我已经在 Knime 中尝试了所有我能想到的方法,但没有想到原始的 SQL 查询。在 Knime 中,我成功地创建了我想要的矩阵结构(Country x Tag),但我不知道如何填充实际的权重值,它们都是问号。我的工作解决方案是简单地将数据以我想要的形式输出到 CSV 文件中,而不是输出到数据库中。但保持同步既笨拙又烦人。有什么想法吗?

最佳答案

您正在寻找一个数据透视表交叉表。我不太喜欢 Knime,但这是你想要谷歌搜索的技术。如果 Knime 没有可用的功能,您可以做的比将 CSV 数据放入 MS Excel 中并旋转它更糟糕。

关于mysql - SQL/Knime - 带 "Group By"的转置表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4083920/

相关文章:

MySQL - 如何将非唯一行转换为列并保持完整性?

sql-server - 如何在两列上使用动态列名进行 SQL PIVOT?

php - SQL 错误 : 1191 - Can't find FULLTEXT index matching the column list

mysql - 查询以获取每个日期出席的所有客人

sql - 查询以根据标签查找主题

php - 如何使用 PHP 将 MySQL 条目拆分为不同的行

mySQL 在每条消息的时间范围内显示日志?

SQL 查找事件的最后日期和最后时间

Mysql 枢轴创建

mysql - 如何将这些行连接到同一个表中的一条记录中