SQL Server:查询以派生新列

时间:2018-02-06 19:53:40

标签: sql sql-server analytics

我正在尝试创建用于报告表的Reneal表。我有一份每年更新的提交清单,大多数情况下政策编号会增加1。

对于每个提交编号,我需要显示当前的政策编号,以前的政策编号和下一个政策编号。

对于帐户的第一个和最后一个策略号,前一个和下一个将为NULL。

我使用此查询的结果:

enter image description here

我希望的结果如下:

enter image description here

我试过这个查询并提供不正确的结果..有关如何从这里开始的任何想法吗?

with CurrentPolicy as 
(
    select 
        Region, 
        SubmissionNumber, 
        MasterPolicyNumber, 
        PolicyNumber, 
        NewRenewal, 
        Renewable,
        DateOfRenewal, 
        EffectiveDate, 
        ExpiryDate, 
        Coverage
    from 
        Policy_Dtl 
) 
select
    CurrentPolicy.SubmissionNumber, 
    left(PriorPolicy.MasterPolicyNumber, 14) + 
        right('00' + cast(right(PriorPolicy.MasterPolicyNumber, 2) - 1 as varchar(3)), 2) as Prior_MasterPolicyNumber,
    CurrentPolicy.MasterPolicyNumber, 
    left(NextPolicy.MasterPolicyNumber, 14) +
        right('00' + cast(right(NextPolicy.MasterPolicyNumber, 2) + 1 as varchar(3)), 2) as Next_MasterPolicyNumber,
    CurrentPolicy.PolicyNumber, 
    CurrentPolicy.NewRenewal, 
    CurrentPolicy.Renewable,
    CurrentPolicy.DateOfRenewal, 
    CurrentPolicy.EffectiveDate, 
    CurrentPolicy.ExpiryDate, 
    CurrentPolicy.Coverage
from 
    CurrentPolicy
left join  
    CurrentPolicy as PriorPolicy on CurrentPolicy.MasterPolicyNumber = PriorPolicy.MasterPolicyNumber
left join  
    CurrentPolicy as NextPolicy on CurrentPolicy.MasterPolicyNumber = NextPolicy.MasterPolicyNumber
where 
    CurrentPolicy.MasterPolicyNumber in ('42-XHF-150104-01', '42-PBL-150104-02', '42-EPF-150104-03', '42-EPF-150104-04','42-EPF-150104-05')

0 个答案:

没有答案