Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle:più query in un risultato

È possibile ottenere i risultati in una query utilizzando l'operatore UNION. Non si presta ad essere conveniente su grandi set, ma fa il suo lavoro.

  • tutte le query devono selezionare lo stesso numero di colonne dello stesso tipo di dati.
  • puoi selezionare null se hai una colonna univoca in una query
  • è utile anche selezionare una stringa che indichi l'origine dei dati
  • il set di risultati utilizzerà solo i nomi delle colonne della prima query
  • l'ordine si applica all'intero set di risultati, non alle singole query

    seleziona count(*) COME R_COUNT, 'OSABA' COME FONTE,subjekt.nazev , null, null,null,null

    da osoba, soggetto

    dove osoba.ID_PATRI_DO=subjekt.ID

    gruppo di subjekt.nazev

    UNIONE

    seleziona conteggio(*),'ZADAVACI_POSTUP', subjekt.nazev , null, null,null,null

    da ZADAVACI_POSTUP, soggetto

    dove ZADAVACI_POSTUP.id_zadavatel=subjekt.ID

    gruppo di subjekt.nazev

    UNIONE

    seleziona NULL,'Aplikacni_log', sb.nazev, lg.create_uzivatel, lg.create_cas,null,null

    da Aplikacni_log lg unisciti a zadavaci_postup zp su zp.id =lg.id_zp

    unisciti a subjekt sb su sb.id =zp.id_zadavatel

    dove lg.create_cas> a_data('08.11.2014', 'GG.MM.AAAA')

    UNIONE

    select count(*) pocet,'SUBQUERY', do_dne_včetně,nazev_organizace,max(trunc(sysdate)-6) ode_dne_včetně,max(trunc(sysdate))

    da(

    seleziona to_char(t.popis) popis_typu,subj.nazev nazev_organizace,

    u.username,u.nazev, a.datumzapisauditu

    ,to_char(a.datumzapisauditu,'DD.MM.YYYY') datum , a.id

    da d$caudit a

    unisciti a cuzivatel u su u.id=a.id_uzivatel

    unisciti a osoba os su u.id_osoba_bridge =os.id

    unisciti a t$subjekt subj su subj.id =os.id_patri_do

    a sinistra unisciti a d$caudittyp t su t.id=a.id_audittyp

    dove datumzapisauditu tra trunc(sysdate)-7 E trunc(sysdate)

    ordine da a.datumzapisauditu desc)

    ;