簡體   English   中英

從具有多行相同id的表中獲取每個id一行和多列的表,並根據條件計算總和

[英]Get a table with one row per id and multiple columns from a table with multiple rows for same id and calculate sum based on condition

這是我的佣金表,其中一些 id 有兩個條目,而另一些只有一個。 如果在原始佣金日期后 30 天內有反向輸入,則應撤銷原始佣金,但如果反向輸入是在 30 天之后,則應忽略它。

線索ID 佣金日期 委員會
22940 2020 年 1 月 3 日 30
22940 2020 年 3 月 30 日 -30
22941 2020 年 4 月 30 日 30
22942 2020 年 3 月 31 日 60
22942 15/06/2020 -60

因此,這是我想要去的最后一張桌子。

線索ID 總佣金
22940 0
22941 30
22942 60

我為查詢的第一部分編寫的代碼應該為任何lead_id 生成一行,存儲佣金日期和佣金金額(如果存在)(某些id 只有一個條目,沒有反向佣金)。 這是代碼

WITH TAB_RN AS
(
      SELECT commissions.lead_id, commissions.commission_date, commissions.commission_amount, ROW_NUMBER() OVER (PARTITION BY commissions.lead_id, commissions.commission_date) AS RN
  FROM commissions
)
SELECT T1.lead_id, 
       T1.commission_date AS DATE1, T1.commission_amount AS amount1
       T2.commission_date AS DATE2, T2.commission_amount AS amount2
FROM TAB_RN T1
LEFT JOIN TAB_RN T2 ON T1.lead_id = T2.lead_id AND T1.commission_date = T2.commission_date AND T2.RN = 2
WHERE T1.RN = 1

它應該產生這個結果

線索ID 日期 1 金額1 日期 2 金額2
22940 2020 年 1 月 3 日 30 2020 年 3 月 30 日 -30
22941 2020 年 4 月 30 日 30
22942 2020 年 3 月 31 日 60 15/06/2020 -60

但相反,我回來了

線索ID 日期 1 金額1 日期 2 金額2
22940 2020 年 1 月 3 日 30
22940 2020 年 3 月 30 日 -30
22941 2020 年 4 月 30 日 30
22942 2020 年 3 月 31 日 60
22942 15/06/2020 -60

然后我想計算日期 1 和 2 之間的差異,如果差異小於 30 天總金額 1 和金額 2,否則只應計算金額 1。

最后,我想在commissions.company = Companies.id 上加入公司表並按公司x 過濾

把它分解

Select 用於佣金

select lead_id, commission_date, commission
from commissions
where commission > 0

然后將其加入到有效的返還佣金中

select commissions.lead_id, commissions.commission_date, commissions.commission + ret.commission as commission_total
from commissions
join (
  -- returned commissions have negative value.
  select lead_id, commission_date, commission
  from commissions
   where commsion < 0
) ret on commissions.lead_id = ret.ldead_id
       and   commissions.commission= ret.commission * -1
       and datediff(day,ret.commission_date,comm commissions.commission_date) <=30
where commission > 0

暫無
暫無

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

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