0

次のクエリがあります。

唯一の「左」テーブルは、別名「o」を持つテーブルです。

以下を明記したい。どのようにできるのか?WITH temp コンストラクトを使用する必要がありますか?

AND (   NVL (domb.DOMB_CONTO_CORRENTE, ' ') != o.campo43
OR NVL (abi.abi_descrizione, ' ') != o.campo41
OR NVL (cab.cab_descrizione, ' ') != o.campo42)

完全な声明は次のとおりです。

  SELECT /*+ parallel(o 64) */
        o.stato, COUNT (1)
    FROM CONF_RAGGRUPPAMENTI_FORN rgf,
         CRD_RID_REL_DOMICILIAZIONE crrd,
         CRD_DOMICILIAZIONI domb,
         uff_abi abi,
         uff_abi_cab cab,
         CONTO_CLIENTE_T809 o,
         eni_flussi_hub c,
         eni_monitor mon
   WHERE     1 = 1
         --RGF - OUT
         AND rgf.RGF_CODICE_RAGGRUPPAMENTO(+) = o.campo1
         --Join tra OUT e la ENI_FLUSSI_HUB
         AND o.id_messaggio = c.flh_id_messaggio(+)
         AND o.d_pubblicazione = c.flh_data_elaborazione(+)
         --Join tra ENI_FLUSSI_HUB e ENI_MONITOR
         AND c.FLH_ID_MESSAGGIO = MON.MON_ID_MESSAGGIO(+)
         AND c.FLH_TIPO_PROCESSO_COD = MON.MON_COD_TP_PROCESSO(+)
         AND c.flh_flag_ann(+) = 'N'
         AND mon_flag_ann(+) = 'N'
         --Join da RGF a DOMB
         AND rgf.UITR_IDENT_TIPI_RAGGR_ID(+) = 'MP'
         AND rgf.RGF_RAGGRUPPAMENTO_FORN_ID = crrd.RGF_RAGGRUPPAMENTO_FORN_ID(+)
         AND crrd.DOMB_DOMICILIAZIONE_ID = domb.DOMB_DOMICILIAZIONE_ID(+)
         AND CRRD.CRRD_RID_REL_DOM_ID = crrd.crrd_storico_id
         AND CRRD.CRRD_FLAG_ANN (+) = 'N'
         AND domb.domb_flag_ann (+) = 'N'
         AND rgf.rgf_flag_ann(+) = 'N'
         --Join tra domb e abi e cab
         AND DOMB.ABI_ID = abi.ABI_ID(+)
         AND DOMB.CAB_ID = cab.CAB_ID(+)
         --Filtro sulle date
         AND o.d_pubblicazione BETWEEN TO_DATE ('06-apr-2013')
                                   AND TO_DATE ('14-apr-2013')
         --Solo i flussi che producono variazioni
         AND (   NVL (domb.DOMB_CONTO_CORRENTE, ' ') != o.campo43
              OR NVL (abi.abi_descrizione, ' ') != o.campo41
              OR NVL (cab.cab_descrizione, ' ') != o.campo42)
GROUP BY o.stato
4

2 に答える 2

1

domp、abi、cab の ID ですでに外部結合を確立しているため、NVL で + を使用する必要はありません。

JOINステートメントを使用すると、SQL Selectが読みやすくなるという他の人に同意します。

クエリに問題はありませんか?

于 2013-05-02T18:56:45.137 に答える