我使用的是oracle12c数据库。我正在尝试使用子查询方法用listag选择distinct值。但是我得到一个错误“ora-01427:单行子查询返回多行01427。00000-“单行子查询返回多行”“。
这是我的密码:
SELECT DISTINCT nr.sd_id,
( select listagg(nr.r_num,' ') within group (ORDER BY Nlssort(nr.r_num, 'NLS_SORT=BINARY_CI'))
OVER ( PARTITION BY nr.sd_id, nr.rid, nr.rr_id) r_num_group
from (select distinct r_num from sg_nr) )
FROM sg_nr nr;
3条答案
按热度按时间qyzbxkaa1#
请使用下面的查询,
scyqe7ek2#
你不需要windows子句(
OVER
). 就用这个WHERE
内部子查询中的子句如下:最好的方法是使用子查询作为内部视图,并将其与主表连接,如下所示:
w1e3prcc3#
性能方面的透视图可以是这样的,因为您已经在使用同一个表了
SG_NR
. 然后使用LISTAGG
带有materialize提示的函数。