2016-03-23 12 views
0

Her varyasyon için farklı bir satır göstermek istemediğimden GROUP BY yan tümcesinde GL sütununu eklemek istemediğim bir sorgu çalıştırıyorum GL alanının Fakat alanı sonraki işlemlerde değerlendirmek ve dinamik olarak oluşturulmuş GL sayılarının bir listesini karşılaştırmak zorundayım. Bunu yapmak için düşünebildiğim en iyi yol bir işlev ile ve ben ListAgg() çalışıyorum. İlk olarak, GL'yi her satırdan bir listeye karşılaştırmak için daha iyi bir işlev var mıdır? Ayrıca, SQL Developer kullanarak aşağıdaki sonuçları elde edebiliyorum, ancak Oracle'ın ORA-01002 hatası döndürdüğü bir web sayfasında çıktılamaya çalışmıyorum. Her iki durumda da 12c kullanıyoruz. Aşağıda sorgu ve çıktı var. ListAgg() olmadan, SELECT ve GROUP BY'ye GL sütununu dahil etmeliyim ve istenmeyen bir şekilde her bir GL için ayrı bir satır çıktılar.ListAgg() ORA-01002: diziden çıkma

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 
+1

FROM yan tümceleriniz nerede? –

cevap

0

Bir koleksiyona grubuna bunu için CAST ve COLLECT kullanabilirsiniz:

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 

Sonra bir dizide olacak müteakip işleme değerleri için kullandığınızda.