如何在此查询中使用with语句?

在此查询中,我要使用with语句。我有一个子查询,它计算所有B的A联合,我想将它与with语句一起使用。但是,当我使用with语句时,会遇到“表或视图不存在”的错误。 使我感到惊讶的是,当我用with语句替换第一部分时,它可以正常工作。但是当我替换第二部分时,我会遇到这个错误!

select 

 deposit.BRNCH_COD||'-'||deposit.DP_TYPE_COD||''||deposit.CUSTOMER_NUM||'- 
 '||deposit.DEPOSIT_SERIAL  AS DEPOSIT_NUMber,deposit.IBAN              AS IBAN,deposit.CURRENCY_DESC     AS DEPOSIT_CURRCOD,deposit.BRNCH_COD         AS BRNCH_COD,MAIN_7.Still_Days                                                                           
AS Still_Lenght,to_char(MAIN_7.Startdate,'yyyy/mm/dd','nls_calendar=persian') AS 
 START_DATE,MAIN_7.AMOUNT                                                                               
  AS TOTAL_AMOUNT,MAIN_7.TRN_Count                                                                            
AS TRN_Count

      from
      (

      select  Trans_Table.DEPOSIT_KEY                     AS DEPOSIT_KEY,Trans_Table.TRN_Start_DATE                  AS Startdate,MAX(active_Time_Table.EFFECTIVE_DATE)       AS Lastdate,H.PASSIVE_DAYS                    AS Still_Days,SUM(active_Time_Table.AMOUNT)               AS AMOUNT,Count(active_Time_Table.AMOUNT)             AS TRN_Count
      from
      (
      Select F.DEPOSIT_KEY,SUM (F.AMOUNT)         AS TRN_AMOUNT,MIN (F.EFFECTIVE_DATE) AS TRN_Start_DATE
      from
      (
      A
      union all
      B
      )F
      Group by (F.DEPOSIT_KEY)
      Having ( SUM (F.AMOUNT) >10000000000)
      )Trans_Table


      inner join
     H
      on (Trans_Table.DEPOSIT_KEY = H.DEPOSIT_KEY and 
       Trans_Table.TRN_Start_DATE-1 = H.EFFECTIVE_DATE)

      inner join
      (

      A
      union all
      B
      )active_Time_Table
      on (Trans_Table.DEPOSIT_KEY = active_Time_Table.DEPOSIT_KEY and 
      active_Time_Table.EFFECTIVE_DATE - Trans_Table.TRN_Start_DATE< 4 and 
      active_Time_Table.EFFECTIVE_DATE - Trans_Table.TRN_Start_DATE>=0)

      group by ( Trans_Table.DEPOSIT_KEY,Trans_Table.TRN_Start_DATE,H.PASSIVE_DAYS)
      Having  (SUM(active_Time_Table.AMOUNT)) > 10000000000
      )MAIN_7


      inner join dimamldeposit deposit
      on deposit.DEPOSIT_KEY = MAIN_7.DEPOSIT_KEY



       ***********************************************************


   with rep as
  (A union all B)
    select

      deposit.BRNCH_COD||'-'||deposit.DP_TYPE_COD||'- 
    '||deposit.CUSTOMER_NUM||'-'||deposit.DEPOSIT_SERIAL  AS DEPOSIT_NUMber,MAIN_7.Still_Days                                                                           AS Still_Lenght,'nls_calendar=persian') AS START_DATE,MAIN_7.AMOUNT                                                                               AS TOTAL_AMOUNT,MAIN_7.TRN_Count                                                                            AS TRN_Count
      from
      (
      select  Trans_Table.DEPOSIT_KEY                     AS DEPOSIT_KEY,MAX(rep.EFFECTIVE_DATE)       AS Lastdate,SUM(rep.AMOUNT)               AS AMOUNT,Count(rep.AMOUNT)             AS TRN_Count
      from
      (
      Select rep.DEPOSIT_KEY,SUM (rep.AMOUNT)         AS TRN_AMOUNT,MIN (rep.EFFECTIVE_DATE) AS TRN_Start_DATE
      from
     rep
      Group by (rep.DEPOSIT_KEY)
      Having ( SUM (rep.AMOUNT) >10000000000)
      )Trans_Table
      inner join
     H
      on (Trans_Table.DEPOSIT_KEY = H.DEPOSIT_KEY and Trans_Table.TRN_Start_DATE-1 = H.EFFECTIVE_DATE)

      inner join
      rep rep
      on (Trans_Table.DEPOSIT_KEY = rep.DEPOSIT_KEY and rep.EFFECTIVE_DATE - Trans_Table.TRN_Start_DATE< 4 and rep.EFFECTIVE_DATE - Trans_Table.TRN_Start_DATE>=0)

      group by ( Trans_Table.DEPOSIT_KEY,H.PASSIVE_DAYS)
      Having  (SUM(rep.AMOUNT)) > 10000000000
      )MAIN_7


      inner join dimamldeposit deposit
      on deposit.DEPOSIT_KEY = MAIN_7.DEPOSIT_KEY
niaoren123456ZJJ1988 回答:如何在此查询中使用with语句?

这是很多代码,但是-为简单起见,我建议您将WITH分解子句用作第一个命令,并在其中使用所有表,然后-作为最后一个{{ 1}}-从所有这些CTE中获取数据。像这样:

SELECT
本文链接:https://www.f2er.com/3168175.html

大家都在问