我试图将选择的陈述结果连接成一行 例如: 对于此select语句输出:
Name
ABC
DEF
GHI
我需要关注输出:
姓名
1 ABC, 2 DEF, 3 GHI
(表示每行应附加行号)
我正在使用wm_concat()函数,但它给了我以下o / p:ABC,DEF,GHI
有人可以帮忙吗?
答案 0 :(得分:3)
听起来你想要类似的东西。 Oracle {11}中提供了listagg()
函数:
select listagg(cast(rownum as varchar2(20))||' '|| name, ', ')
within group (order by name) name
from yourtable
结果:
| NAME |
-----------------------
| 1 ABC, 2 DEF, 3 GHI |
如果您没有Oracle 11g,则可以使用wm_concat()
:
select wm_concat(cast(rownum as varchar2(20))||' '|| name) name
from yourtable
答案 1 :(得分:0)
另外你可以使用WITH子句:
WITH tmp AS
(
:your_select_statement
)
SELECT
LISTAGG(rownum || ' ' || :your_column, ', ')
WITHIN GROUP (ORDER BY :your_column) tmp
FROM tmp;
然后rownum来自tmp临时表,其结果为:your_select_statement不是来自主表。