在我的数据库中,我有一个表,其中有一列A,各自的值为:
A
--
1
2
3
4
5
有什么方法可以将表格转换为
A|1|2|3|4|5|
我尝试使用PIVOT
关键字,但我无法获得结果。
答案 0 :(得分:0)
create table temp2(a integer);
insert into temp2 values(1);
insert into temp2 values(2);
insert into temp2 values(3);
insert into temp2 values(4);
您的要求不明确,但我尝试使用UNPIVOT
。我不知道您希望在结果中有多少列,但我相信这会给您提示您需要继续进行哪些操作。
SELECT
"Key",
wm_concat(value)
FROM Temp2
UNPIVOT (
value FOR "Key" IN (a)
)
<强>输出强>
Key WM_CONCAT(VALUE)
--------------------------
A 1,2,4,3
如果你删除了wm_concat函数,那么它将给出以下输出。
Key VALUE
--------------------
A 1
A 2
A 4
A 3
---------------------
答案 1 :(得分:0)
如果您不知道预期会有多少列,那么可以使用XMLAGG 它不会为您提供列,而是为每行提供xml元素。之后,您可以将每个元素提取到一列 看看这个例子:
with t as (select xmlagg(xmlelement("E", a)) a_xml from your_table)
select rtrim(extract(a_xml, 'E[1]/text()')),
rtrim(extract(a_xml, 'E[2]/text()')),
rtrim(extract(a_xml, 'E[3]/text()')),
rtrim(extract(a_xml, 'E[4]/text()')),
rtrim(extract(a_xml, 'E[5]/text()'))
from t