我有一张长桌:
| 列1|列2|第3栏|
| - ------|- ------|- ------|
| 人员1|名|奥雷利|
| 人员1|前名|杜邦|
| 人员1|年龄|二十五|
| 人员2|名|斯特凡|
| 人员2|前名|布朗|
| 人员2|年龄|四十五|
我想把它转换成这个形状:
| 山坳|名|前名|年龄|
| - ------|- ------|- ------|- ------|
| 人员1|奥雷利|杜邦|二十五|
| 人员2|斯特凡|布朗|四十五|
我在Oracle SQL Developer中尝试了这段代码,但它不起作用:
select *
from table as SourceTable
pivot (max(col3) for col2 in ('nom', 'prenom', 'age'));
PS:"年龄"列为字符串
你能帮忙吗?
谢谢大家!
1条答案
按热度按时间oxf4rvwz1#
(Code您发布的,以及标签建议您使用Oracle数据库。下面的代码使用Oracle。)
一种选择是使用条件聚合。
样本数据:
质询:
或者,旋转-正如您尝试的那样:
您评论说将
age
作为字符串有问题;它肯定是一个字符串,因为COL3
包含 * names *,所以它不可能是NUMBER
数据类型列。