如何将 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'));
我的查询输出如下。
但我需要结果采用以下格式。
这可以通过使用以下查询来解决..
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'));