转换 PL/SQL 选择自定义列中的行



我遇到了这个问题,我正在这样做选择:

select * from mytable;

并获得以下结果

-------------
|NAME |VALUE|
-------------
|nam1 |val1 |
-------------
|nam2 |val2 |
-------------
|nam3 |val3 |
-------------

结果始终采用如下格式,名称>值。此外,表上还放置了约束,因此结果中只能显示一个不同的 NAME。此外,值可以是数字、varchars、null,我不想对此值进行聚合。

现在我想将此结果转换为:

--------------------
|NAM1 |NAM2 | NAM3 |
--------------------
|val1 |val2 | val3 |
--------------------

我尝试使用 pivot(( 函数实现此结果,但没有取得多大成功。

感谢您的时间,最诚挚的问候:)

编辑

这是使用硬编码列值的工作示例,这是我想避免的。

select * from (select name, value from mytable)
pivot (min(value) for name in (
'nam1' as nam1
'nam2' as nam2
'nam3' as nam3
));

使用 DECODE 函数:

选择名称,解码(名称,"名称1","值1",0(为名称1,解码(名称,"名称2","值2",0(为名称2,解码(名称,"名称3","值3",0(为名称3,解码(名称,"名称4","值4",0(为名称4从我的表按名称分组按名称排序;

最新更新