如何将 Oracle SQL 查询的结果转换为列?

How to convert results of an Oracle SQL query into columns?

我的查询输出如下。

但我需要结果采用以下格式。

这可以通过使用以下查询来解决..

select ID,
MAX(DECODE(usr.attrname, 'NAME' , usr.ATTRVAL)) AS NAME,
MAX(DECODE(usr.attrname, 'EMAIL' , usr.ATTRVAL))  AS EMAIL,
MAX(DECODE(usr.attrname, 'Phonenum' , usr.ATTRVAL)) AS Phonenum
from usr
group by ID order by 1;

The output can be achieved as follows -

设置:-

CREATE TABLE TAB1
(
  ID NUMBER,
  ATTRNAME VARCHAR2(1024),
  ATTRVALUE VARCHAR2(1024)
);


insert into tab1 values (1, 'Name', 'Mark');
insert into tab1 values (1, 'Email', 'abc@cdf.com');
insert into tab1 values (1, 'Phone num', '12234');

insert into tab1 values (2, 'Name', 'Julie');
insert into tab1 values (2, 'Email', 'abc@cdf.com');
insert into tab1 values (2, 'Phone num', '12234');

查询:-

select * from (
  select * from tab1)
pivot(
  max(attrvalue) for attrname in ('Name', 'Email','Phone num')
  ) order by id;

结果:-

ID  'Name'  'Email' 'Phone num'
1   Mark    abc@cdf.com 12234
2   Julie   abc@cdf.com 12234

select * 来自员工 枢轴( max(attribute) for your column in('NAME','EMAIL','Phone'));