sql >> Database >  >> RDS >> Oracle

Oracle - unieke Listagg-waarden

Ik heb de eerste distinct verwijderd aangezien je al group by alle velden in uw Select query, en verving de case when met een select vraag:

select ds.catnr,ds.planqty, ds.ordnr, ds.posnr, ds.segnr, 
    listagg((select distinct max(li1.paco) from leos_item li1 where li.av_part_no = li1.av_part_no and li.paco is not null), ', ') within group (order by pd.part_no) inq_no
    from oes_delsegview ds, oes_address ad, oes_opos op, oes_nrbom nr, scm_prodtyp sp, leos_item li, part_description pd
    where ds.delnr = ad.key
    and ad.adr = ds.deladr
    and ds.pos_o_status not in ('9', 'D')
    and ds.pos_c_status not in ('9', 'D')
    and ds.seg_o_status not in ('9', 'D')
    and ds.seg_c_status not in ('9', 'D')
    and ds.cunr in ('W31170','W31172')
    and ds.pos_type != 'RC'
    and ds.ordnr = op.ordnr
    and ds.posnr = op.posnr
    and ds.catnr = pd.catnr
    and ds.prodtyp = pd.prodtyp
    and ds.packtyp = pd.packtyp
    and ds.catnr = nr.p_catnr (+)
    and ds.prodtyp = nr.p_prodtyp (+)
    and ds.packtyp = nr.p_packtyp (+)
    and nr.c_prodtyp = sp.prodtyp (+) 
    and sp.prodgrp (+) = 'COMP'
    and substr(nr.c_prodtyp,1,2) not in ('MT','LF')
    and nr.c_catnr = li.catnr (+)
    and nr.c_prodtyp = li.prodtyp (+)
    and nr.c_packtyp = li.packtyp (+)
    and pd.catnr = '9780007938797'
    group by ds.catnr,ds.planqty, ds.ordnr, ds.posnr, ds.segnr


  1. Hoe ik alleen het eerste resultaat in de SQL-functie kan vervangen?

  2. DUBBEL versus DECIMAAL in MySQL

  3. Een index maken op een tijdstempel om de query te optimaliseren

  4. Back-up/herstel van MySQL/MariaDB en PostgreSQL met behulp van de hulpprogramma's 'Automysqlbackup' en 'Autopostgresqlbackup'