2015-05-09 70 views
0

我正在做如下查詢並收到「沒有單組功能」錯誤。Oracle SQL:rtrim和group by

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()'), ',') 

但是,當我試圖這樣做,我收到了一個錯誤:我不是在SELECT語句中使用任何聚合

ORA-00937 not a single-group group function 

。我應該怎樣寫rtrim(...)而不出錯?

在此先感謝。

回答

0

您需要刪除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