我有一个包含许多行和两列的表。例如,我的表格看起来像这样:
ID Name
1 Bob
2 Jerry
3 Tom
4 John
最终我想要的是桌子看起来像这样:
ID Name ID Name ID Name ID Name
1 Bob 2 Jerry 3 Tom 4 John
我如何在SQL中执行此操作?
由于
答案 0 :(得分:0)
您可以使用LISTAGG
汇总一行中的行,但就像我说的那样,它只会是一列。顺便说一句,据我所知,你不能有多个具有相同名称的列:
Oracle 11g R2架构设置:
CREATE TABLE Table1
("ID" int, "Name" varchar2(5))
;
INSERT ALL
INTO Table1 ("ID", "Name")
VALUES (1, 'Bob')
INTO Table1 ("ID", "Name")
VALUES (2, 'Jerry')
INTO Table1 ("ID", "Name")
VALUES (3, 'Tom')
INTO Table1 ("ID", "Name")
VALUES (4, 'John')
SELECT * FROM dual
;
查询1 :
SELECT listagg ("ID" || ' ' || "Name", ' ') WITHIN GROUP (ORDER BY ID) Result
FROM Table1
<强> Results 强>:
| RESULT |
|----------------------------|
| 1 Bob 2 Jerry 3 Tom 4 John |