在sql oracle中将单列值转换为单行

Vij*_*jay 1 sql oracle oracle11g

我创建了一个简单的表格,其中包含如下数字:

CREATE TABLE saleshist (q1 NUMBER);
INSERT INTO saleshist VALUES (100);
INSERT INTO saleshist VALUES (101);
INSERT INTO saleshist VALUES (102);
INSERT INTO saleshist VALUES (103);

select * from saleshist
Run Code Online (Sandbox Code Playgroud)

上面的选择显示了一个单列,如:

100
102
102
103
Run Code Online (Sandbox Code Playgroud)

我希望看到如下输出:

100,101,102,103
Run Code Online (Sandbox Code Playgroud)

是的,它是单个行中的逗号分隔列值作为单个值。这只是我想到的一个例子,列值可以有很多。我想 UNPIVOT 可以做到这一点但我无法正确理解。我想到的解决方案的最佳方法是编写一个 perl 脚本并执行查询,然后将行转换为以逗号分隔的列。有没有一种直接的方法可以在 sql 本身中做到这一点?

Ale*_*sej 5

您可以使用LISTAGG

select listagg(q1, ',') within group (order by null) from saleshist
Run Code Online (Sandbox Code Playgroud)