2017-01-09 64 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