2013-08-02 50 views
0

我遇到了我的LISTAGG函數的問題。我不斷收到錯誤ORA-00937:沒有一個組功能。我已經使用了這個錯誤,但對於什麼是錯誤還不清楚。SQL Listagg函數 - 錯誤

場景: 我有一個分段表。細分受衆羣可以有多人分配給他們(一對多)。我需要我的輸出/報告來顯示一列中的段號和另一列中的用戶列表。

查詢

select fcs.nld_flood_control_segment_id 
     , fcs.fc_segment_name 
     , fcs.fc_segment_abbrev_name 
     , LISTAGG(ps.first_name|| ' ' ||ps.last_name, ', ') within group (ORDER BY fcs.nld_flood_control_segment_id, ps.last_name) "ListOfReps" 
     from nld_flood_control_segments fcs 
     , nld_fc_segment_person_xref xr 
     , persons      ps 
    where fcs.nld_flood_control_segment_id = :P1_id 
     and :P1_id       = xr.nld_flood_control_segment_id 
     and xr.person_id      = ps.person_id 
    order by nld_flood_control_segment_id asc 
     ; 

任何幫助將不勝感激。提前致謝。

回答

2

的LISTAGG函數具有下面的語法結構:

LISTAGG([,]) WITHIN GROUP (ORDER BY) [OVER (PARTITION BY)] 

LISTAGG是可任選地用作分析(即,可選OVER()子句)聚合函數。以下內容是強制性的:

the column or expression to be aggregated; 
the WITHIN GROUP keywords; 
the ORDER BY clause within the grouping. 

例子:

LISTAGG(ename, ',') WITHIN GROUP (ORDER BY ename) AS employees 

請嘗試以下,看它是否會提供你所需要的。

LISTAGG(ps.first_name|| ' ' ||ps.last_name, ',') within group (ORDER BY ps.first_name|| ' ' ||ps.last_name) "ListOfReps"