2017-01-09 23 views
1

通過使用SQL服務器,我試圖篩選出當「本地貨幣溢價」加總爲零然後與每個策略編號關聯的行最後一行在「當前狀態」欄中有「取消」。當滿足兩個條件時篩選出相同策略編號的記錄


Workno#   MasterPolicyNumber EffectiveDate CurrentStatus PremiumLocalCurrency 
16-05-01-035210-01 42-PRP-302562-01 2016-05-12   Bound  61438 
16-05-01-035210-02 42-PRP-302562-01 2016-05-12  Cancellation -61438 

以下是SQL查詢我用

select 
       [Workno#], 
       [MasterPolicyNumber], 
       [EffectiveDate], 
       [CurrentStatus], 
       [PremiumLocalCurrency] 
       from IT.dbo.View_Rater_Of_Record 
     where [MasterPolicyNumber] = '42-PRP-302562-01' 
       order 
     by [Workno#] 

但我想既然總和加起來是零,結果被過濾掉的兩排像零個記錄最後一行有「取消」作爲狀態。提前致謝。

我也試過使用Having從句,但我沒有得到結果。下面的線路濾波器的第二排,因爲它是小於1

Having SUM(CAST([Premium in Local Currency]as float))>1 
+0

哪些DBMS您使用的? –

回答

1

假設SQL服務器:

with Canc as 
(
select MasterPolicyNumber, EffectiveDate, CurrentStatus, PremiumLocalCurrency, 
     row_number() over(partition by MasterPolicyNumber order by Workno# desc) as Row_ord 
from View_Rater_Of_Record 
) 
select C1.MasterPolicyNumber, sum(C2.PremiumLocalCurrency) as TotPLC 
from Canc C1 
inner join Canc C2 
    on C1.MasterPolicyNumber = C2.MasterPolicyNumber 
where C1.Row_Ord = 1 
and C1.CurrentStatus = 'Cancellation' 
group by C1.MasterPolicyNumber 
having sum(C2.PremiumLocalCurrency) <> 0 

編輯:忘了基本的加入...

+0

這個appproach沒有工作。它給出了總數而不是過濾掉行 – Mike

+0

@ user7394916是的,它給你所有沒有以取消結束並且沒有總數爲0的行的總數。這是一個起點回答你的問題。 – JohnHC

+0

我想過濾掉所有的行,如果在「當前狀態」取消,以及保費加起來爲0 – Mike

相關問題