簡體   English   中英

兩個值相減時返回 null 值

[英]Returning null values when subtracting two values

我正在運行查詢以獲取特定客戶在兩個時間段(7 月和 8 月)內的總數。 然后將兩者相減得到差值。 但是,當我減去時,我得到 null 值,即使該客戶端的 7 月和 8 月都存在值。

select 語句的這一部分返回 null 值,即使我知道值/數字存在。 'AUG.amount - JUL.amount 作為 Final_Result'

我曾嘗試單獨運行 Jul 和 Aug 表,它們確實返回了 AH 的總和/總計。

SELECT AUG.party_name, AUG.amount - JUL.amount as Final_Result

FROM (select cl.party_name, sum(cl.amount)/1000 as amount
from CLIENT_PROFIT CL
where to_char(trade_date,'YYYYMMDD') between '20190801' and '20190830'
AND cl.party_name = 'AH'
group by cl.party_name
) AUG

LEFT JOIN

(select cl.party_name, sum(cl.amount)/1000 as amount
from CLIENT_PROFIT CL
where to_char(trade_date,'YYYYMMDD') between '20190701' and '20190731'
AND cl.party_name = 'AH'
group by cl.party_name) JUL

ON AUG.party_name = JUL.party_name

group by AUG.party_name

order by Final_Result DESC

預期結果應該顯示 AH 的 8 月和 7 月之間的差異

您可以使用以下方法直接獲取它:編輯查詢以按月使用 trunc。

select cl.party_name, 
(sum(case when trunc(trade_date,'month') = date '2019-08-01' then cl.amount end) 
- sum(case when trunc(trade_date,'month') = date '2019-07-01' then cl.amount end) )  /1000 as amount
from CLIENT_PROFIT CL
where trunc(trade_date) between date '2019-07-01' and date '2019-08-31'
AND cl.party_name = 'AH'
group by cl.party_name;

此外,您忘記在查詢中包含 2019 年 8 月 31 日。

干杯!!

您可以使用沒有group by Conditional Aggregation ,因為您只有一個參與方名稱:

select 'AH' as party_name, 
       sum(case when to_char(trade_date,'YYYYMM')='201908' then cl.amount/1000 end) - 
       sum(case when to_char(trade_date,'YYYYMM')='201907' then cl.amount/1000 end)
       as Final_Result
  from CLIENT_PROFIT CL
 where cl.party_name = 'AH'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM