如何从Snowflake的同一表中提取当年和上一年的数据?

问题描述

我在SNowflake中有一张表格,例如,我试图在其中提取输入日期和当天的总金额,并获得相同的输入日期,但上一年以及该年的总金额。

我只获得上一年日期和金额的空值。

sql: 选择*

  from ((
    select  
     TO_DATE(a.RpEntTrDt,'MM/DD/YY') RpEntTrDt,sum(a.RpEntTrAmt) Report_Entry_Transaction_Amount_PY
    from "EC_ERP_PROD"."PUBLIC"."CONCUR" a
    Where a.RpEntTrDt <> '' 
   -- and TO_DATE(a.RpEntTrDt,'MM/DD/YY') = '2018-05-01'
     group by TO_DATE(a.RpEntTrDt,'MM/DD/YY')) aa
     
     left outer join
    (select  
     --DATEADD(year,-1,TO_DATE(trim(a.RpEntTrDt),'MM/DD/YY')) RpEntTrDtPY,TO_DATE(a.RpEntTrDt,'MM/DD/YY') RpEntTrDtPY,sum(a.RpEntTrAmt) Report_Entry_Transaction_Amount_PY
    from "EC_ERP_PROD"."PUBLIC"."CONCUR" a
    Where a.RpEntTrDt <> '' 
     and TO_DATE(a.RpEntTrDt,'MM/DD/YY') =  current_date () -1
     group by TO_DATE(a.RpEntTrDt,'MM/DD/YY')
    ) bb
on aa.RpEntTrDt = bb.RpEntTrDtPY)

解决方法

尝试此查询。对相同的聚集表数据进行自我联接。

    SELECT *
FROM (
  (SELECT to_date(a.rpenttrdt,'MM/DD/YY') rpenttrdt,sum(a.rpenttramt) report_entry_transaction_amount
   FROM "EC_ERP_PROD"."PUBLIC"."CONCUR" a
   WHERE a.rpenttrdt <> ''
   GROUP BY a.rpenttrdt) aa
LEFT OUTER JOIN
  (SELECT to_date(b.rpenttrdt,'MM/DD/YY') rpenttrdtpy,sum(b.rpenttramt) report_entry_transaction_amount_py
   FROM "EC_ERP_PROD"."PUBLIC"."CONCUR" b
   WHERE b.rpenttrdt <> ''
   GROUP BY b.rpenttrdt) bb ON to_date(a.rpenttrdt,'MM/DD/YY') = dateadd(YEAR,-1,to_date(bb.rpenttrdt,'MM/DD/YY'))
) c