Oracle ListAgg()ORA-01002:提取顺序错误
我正在运行一个查询,其中我不想在GROUP BY子句中包括总账列,因为我不想为总账字段的每个变体显示不同的行。但我需要在后续处理中评估字段,将其与动态生成的总账编号列表进行比较。我认为最好的方法是使用函数,我正在尝试listag()。首先,是否有更好的函数用于将每行总账与列表进行比较?另外,我可以使用SQLDeveloper获得下面的结果,但当我试图将其输出到Oracle返回ORA-01002错误的网页上时,则无法获得。我们在这两种情况下都使用12c。下面是查询和输出。如果没有listag(),我必须在SELECT和GROUP BY中包含GL列,并且它不希望为每个GL输出单独的行Oracle ListAgg()ORA-01002:提取顺序错误,oracle,Oracle,我正在运行一个查询,其中我不想在GROUP BY子句中包括总账列,因为我不想为总账字段的每个变体显示不同的行。但我需要在后续处理中评估字段,将其与动态生成的总账编号列表进行比较。我认为最好的方法是使用函数,我正在尝试listag()。首先,是否有更好的函数用于将每行总账与列表进行比较?另外,我可以使用SQLDeveloper获得下面的结果,但当我试图将其输出到Oracle返回ORA-01002错误的网页上时,则无法获得。我们在这两种情况下都使用12c。下面是查询和输出。如果没有listag(),
SELECT h.h_spa_id as spa_id,
h.submit_dt,
h.oa_ap_date,
ListAgg(gl,',') within group (order by gl) "mygl"
WHERE h.next_apprv= 'approverID'
and h.table1_id = d.table2_id
and h.table1_id = table3_id
group by h.h_spa_id,h.submit_dt,h.oa_ap_date
order by h.h_spa_id
H_SPA_ID SUBMIT_DT OA_AP_DATE MYGL
1627005 1/25/2008 10:11:53 AM 1/25/2008 11:15:56 AM 52287,52287,52287,52287,52287,52287,52287,52287,52287,52287,52385,52385,52385,52385,52385,52385,52385,52385,52385,52385,52385,52385,52385,52385,52385
您可以使用
CAST
和COLLECT
将其分组为一个集合:
SELECT h.h_spa_id as spa_id,
h.submit_dt,
h.oa_ap_date,
CAST( COLLECT( DISTINCT gl ) AS SYS.ODCINUMBERLIST ) AS mygl
FROM h
INNER JOIN
d
ON ( h.table1_id = d.table2_id )
WHERE h.next_apprv = 'approverID'
AND h.table1_id = table3_id
GROUP BY h.h_spa_id,
h.submit_dt,
h.oa_ap_date
ORDER BY h.h_spa_id
然后,当您将其用于后续处理时,这些值将在一个数组中。select上的FROM子句在哪里?