3 tablolarım var: table_A, table_B ve table_C. Table_A bir birincil anahtara sahiptir ve table_B'den bir yabancı anahtar tarafından belirtilir. Table_C, table_B'den bir yabancı anahtar tarafından belirtilen bir birincil anahtara sahiptir. tasarım şu şekildedir:Oracle sorgusunda listagg üzerinde bir koşul nasıl kullanılır?
Table_A: ID_A TextData
Table_B: ID_B ID_A ID_C
Table C: ID_C TextData
sorgusu:
select a.id_a, a.textdata, listagg(c.textdata, ', ') within group (order by c.id_c) data_c from table_a a inner join table_b b on (a.id_a = b.id_a) inner join table_c c on (b.id_c = c.id_c) where c.textdata like :data group by a.id_a, a.textdata;
Sadece c.textdata biri masanın değil, veri almak listagg'dan. Bu sorguyu kullanarak denerseniz: Ben veri gerektiğinden, grup işlevi nasıl listagg parametresine bir koşul vermek için buraya
izin verilmez:
select a.id_a, a.textdata, listagg(c.textdata, ', ') within group (order by c.id_c) data_c from table_a a inner join table_b b on (a.id_a = b.id_a) inner join table_c c on (b.id_c = c.id_c) where listagg(c.textdata, ', ') like :data group by a.id_a, a.textdata;
bir hata gibi olsun listagg?
select *
from (
select a.id_a,
a.textdata,
listagg(c.textdata, ', ') within group (order by c.id_c) data_c
from table_a a
inner join table_b b on (a.id_a = b.id_a)
inner join table_c c on (b.id_c = c.id_c)
group by a.id_a, a.textdata
)
where data_c like :data
veya LISTAGG tarafından inşa sahadaki koşulları uygulamak için HAVING kullanarak:
ve ben sonuç gibi olsun this: "data_c": geçersiz tanımlayıcı – user3505775
Üzgünüm, hatalı bir durumum var. desteğiniz için teşekkürler: D – user3505775