嗨,我知道如何将ONKAR
打印到
O
N
K
A
R
但是我想反过来。我的意思是
O
N
K
A
R
到ONKAR
任何人都可以告诉我同样的查询内容。
答案 0 :(得分:2)
尝试一下:这将为您提供字符串聚合
select listagg(column1) within group(order by rn) from
(SELECT column1,row_number() over(partition by column1) as rn
FROM table)a
答案 1 :(得分:1)
您可以为此使用LISTAGG
。
样品:
with cte as (
select 1 as pk,'O' AS name from dual
union all
select 2,'N' from dual
union all
select 3,'K' from dual
union all
select 4,'A' from dual
union all
select 5,'R' from dual)
select LISTAGG(name) WITHIN GROUP(ORDER BY pk) from cte
编辑:正如其他注释中已经提到的那样,没有排序键列将是不可能的,因为无法按插入顺序将这些行取出。
如果您添加动态行号,则最好获得的是ANKOR
或ROKNA
,因为表中没有写明如何获取行的规则。
答案 2 :(得分:1)
最好使用Oracle的伪列Rowid
来提供字母的正确顺序:
create table tab( col0 varchar2(50) );
insert all
into tab values( 'O' )
into tab values( 'N' )
into tab values( 'K' )
into tab values( 'A' )
into tab values( 'R' )
select * from dual;
SELECT listagg(col0) within group (order by rd) "My Name is "
FROM
(
SELECT col0, rowid rd
FROM tab a
ORDER BY rowid
);
P.S。即使rowid不能保证Kaushik所说的那些获取DML的表的列的顺序,我还是建议使用rowid
来避免在这种特殊情况下与其他辅助列进行硬编码。