问题描述
我在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