【发布时间】:2021-12-17 23:10:33
【问题描述】:
我有这样的数据库表:
col1 col2
1 data1
1 data2
1 data3
2 data4
2 data5
2 data6
3 data7
3 data8
3 data9
(col1 value=1的行数据,将作为列名); 我需要将其转换为以下格式:
col1 data1 data2 data3
2 data4 data5 data6
3 data7 data8 data9
4 data10 data11 data12
我已经尝试过pivot 函数,也尝试过使用过程和函数进行手动转换,但到目前为止没有任何效果。
编辑:我正在使用 oracle。之前我错误地标记了mysql。
【问题讨论】:
-
您错误地标记了两个不同的 DBMS,Oracle 和 MySQL。你用的是哪两个?那么,每个 col1 值总是正好三行?顺序重要还是 2|data6|data4|data5 对你没问题?
-
显示问题通常在您的应用程序或网站中处理,而不是在 SQL 中。如果您真的想在 SQL 中执行此操作,窗口函数会很有帮助。 Oracle 长期以来一直在使用它们,但 MySQL 仅从版本 8 开始。所以,如果您使用 MySQL:您使用的是哪个版本?
-
DBMS 表不是电子表格,您可以在其中在任何单元格中输入任何值。 DBMS 结果集结构由解析完成后的语句定义。因此,要拥有动态列名(取决于数据),您需要动态 SQL