PL/SQL Select 行中的值(垂直)
PL/SQL Select values in rows (vertical)
我正在尝试从我的数据库中 select 值。现在我得到水平显示的结果集,但我希望它以垂直方式显示。
SELECT * FROM myTable;
使用此查询,结果如下所示:
ID | Name | Age | City_id
1 A 20 2
但我希望它看起来像这样:
1
A
20
2
我的问题有解决方案吗?
我尝试使用 UNPIVOT
但没用
我在 XE 数据库上制作了这个示例,table 名员工。您可以使用枢轴子句:
select first_name from employees
pivot(
sum(salary) for department_id in (50)
);
输出:
Bruce
Luis
Den
Shanta
Renske
Oliver
Clara
Alexis
...
.
PIVOT
(
PIVOT_CLAUSE
PIVOT_FOR_CLAUSE
PIVOT_IN_CLAUSE
)
条款 - 这是一个函数(此处:sum())
FOR_CLAUSE - 确定作为创建列的基础的数据
IN_CLAUSE - 确定此数据的范围(此处:department_id,可能是 hire_date、眼睛颜色、狗类型等)
您的要求没有多大意义,但是您想要实现的,可以通过Union
完成
试试这个
select cast(id as varchar2(20)) as col1 from myTable
union all
select Name from mytable
union all
select cast(Age as varchar2(20)) from mytable
union all
select cast(City_id as varchar2(20)) from mytable
Xml 和 xquery 。
select * from xmltable('for $i in ./ROWSET/ROW/* return $i'
passing xmltype(dbms_xmlgen.getxml('select * from all_objects where rownum < 2'))
columns colum_name varchar2(100) path 'local-name()'
, text varchar2(100) path 'text()'
);
在你的情况下,你可以像下面这样使用它
select text from
(
select * from
xmltable('for $i in ./ROWSET/ROW/* return $i'
passing xmltype(dbms_xmlgen.getxml('select * from myTable where rownum < 2'))
columns colum_name varchar2(100) path 'local-name()'
,text varchar2(100) path 'text()'
)
)
我正在尝试从我的数据库中 select 值。现在我得到水平显示的结果集,但我希望它以垂直方式显示。
SELECT * FROM myTable;
使用此查询,结果如下所示:
ID | Name | Age | City_id 1 A 20 2
但我希望它看起来像这样:
1 A 20 2
我的问题有解决方案吗?
我尝试使用 UNPIVOT
但没用
我在 XE 数据库上制作了这个示例,table 名员工。您可以使用枢轴子句:
select first_name from employees
pivot(
sum(salary) for department_id in (50)
);
输出:
Bruce
Luis
Den
Shanta
Renske
Oliver
Clara
Alexis
...
.
PIVOT
(
PIVOT_CLAUSE
PIVOT_FOR_CLAUSE
PIVOT_IN_CLAUSE
)
条款 - 这是一个函数(此处:sum())
FOR_CLAUSE - 确定作为创建列的基础的数据
IN_CLAUSE - 确定此数据的范围(此处:department_id,可能是 hire_date、眼睛颜色、狗类型等)
您的要求没有多大意义,但是您想要实现的,可以通过Union
试试这个
select cast(id as varchar2(20)) as col1 from myTable
union all
select Name from mytable
union all
select cast(Age as varchar2(20)) from mytable
union all
select cast(City_id as varchar2(20)) from mytable
Xml 和 xquery 。
select * from xmltable('for $i in ./ROWSET/ROW/* return $i'
passing xmltype(dbms_xmlgen.getxml('select * from all_objects where rownum < 2'))
columns colum_name varchar2(100) path 'local-name()'
, text varchar2(100) path 'text()'
);
在你的情况下,你可以像下面这样使用它
select text from
(
select * from
xmltable('for $i in ./ROWSET/ROW/* return $i'
passing xmltype(dbms_xmlgen.getxml('select * from myTable where rownum < 2'))
columns colum_name varchar2(100) path 'local-name()'
,text varchar2(100) path 'text()'
)
)