Oracle SQL:rtrim 和分组依据
Oracle SQL: rtrim and group by
我正在执行以下查询并收到 "not a single-group group function" 错误。
select distinct a.col1,
a.col2,
rtrim(xmlagg(xmlelement(e, b.col1 ||',')).extract('//text()'), ','),
rtrim(xmlagg(xmlelement(e, b.col2 ||',')).extract('//text()'), ',')
from table1 a
where a.col3 like '%string%'
left join table2 b on (a.pid = b.pid);
我确实在 table1 和 table2 之间进行了左连接,我需要将多行聚合为一行。所以我写道:
rtrim(xmlagg(xmlelement(e, b.col1 ||',')).extract('//text()'), ','),
rtrim(xmlagg(xmlelement(e, b.col2 ||',')).extract('//text()'), ',')
但是当我尝试这样做时,我收到了一个错误:
ORA-00937 not a single-group group function
我没有在 select 语句中使用任何聚合。我应该怎么做才能写 rtrim(...) 没有错误?
提前致谢。
您需要删除 DISTINCT
并改用 GROUPING
,因为您使用的是聚合函数。
select a.col1,
a.col2,
rtrim(xmlagg(xmlelement(e, b.col1 ||',')).extract('//text()'), ','),
rtrim(xmlagg(xmlelement(e, b.col2 ||',')).extract('//text()'), ',')
from table1 a
where a.col3 like '%string%'
left join table2 b on (a.pid = b.pid)
GROUP BY a.col1,
a.col2
我正在执行以下查询并收到 "not a single-group group function" 错误。
select distinct a.col1,
a.col2,
rtrim(xmlagg(xmlelement(e, b.col1 ||',')).extract('//text()'), ','),
rtrim(xmlagg(xmlelement(e, b.col2 ||',')).extract('//text()'), ',')
from table1 a
where a.col3 like '%string%'
left join table2 b on (a.pid = b.pid);
我确实在 table1 和 table2 之间进行了左连接,我需要将多行聚合为一行。所以我写道:
rtrim(xmlagg(xmlelement(e, b.col1 ||',')).extract('//text()'), ','),
rtrim(xmlagg(xmlelement(e, b.col2 ||',')).extract('//text()'), ',')
但是当我尝试这样做时,我收到了一个错误:
ORA-00937 not a single-group group function
我没有在 select 语句中使用任何聚合。我应该怎么做才能写 rtrim(...) 没有错误?
提前致谢。
您需要删除 DISTINCT
并改用 GROUPING
,因为您使用的是聚合函数。
select a.col1,
a.col2,
rtrim(xmlagg(xmlelement(e, b.col1 ||',')).extract('//text()'), ','),
rtrim(xmlagg(xmlelement(e, b.col2 ||',')).extract('//text()'), ',')
from table1 a
where a.col3 like '%string%'
left join table2 b on (a.pid = b.pid)
GROUP BY a.col1,
a.col2