gpt4 book ai didi

sql - 列值到标题 oracle

转载 作者:行者123 更新时间:2023-12-03 01:22:44 25 4
gpt4 key购买 nike

我有一个表,其架构如下

Empid   Field Type  Field Value
123 Name John
123 Age 33
124 Name Tijo
124 Age 24

输出应采用以下格式

Empid       Name             Age
123 John 33
124 Tijo 24

如何使用 Oracle 数据库的查询来实现此操作?

最佳答案

这种类型的行到列的转换称为 PIVOT。有几种方法可以做到这一点。

由于您使用的是Oracle 11g,因此可以使用PIVOT功能:

select empid, Name, age
from
(
select empid,
fieldtype,
fieldvalue
from yt
)
pivot
(
max(fieldvalue)
for fieldtype in ('Name' as Name, 'Age' as Age)
);

参见SQL Fiddle with Demo .

在 Oracle 11g 之前,您可以使用带有 CASE 表达式的聚合函数:

select empid,
max(case when fieldtype = 'Name' then fieldvalue end) name,
max(case when fieldtype = 'Age' then fieldvalue end) age
from yt
group by empid;

参见SQL Fiddle with Demo .

您还可以通过多次加入表来获得结果:

select t1.empid,
t1.fieldvalue name,
t2.fieldvalue age
from yt t1
left join yt t2
on t1.empid = t2.empid
and t2.fieldtype = 'Age'
where t1.fieldtype = 'Name';

参见SQL Fiddle with Demo 。每个版本给出的结果:

| EMPID | NAME | AGE |
----------------------
| 123 | John | 33 |
| 124 | Tijo | 24 |

关于sql - 列值到标题 oracle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16197655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com