如何根据下一个生效日期创建到期日期

时间:2017-03-31 14:55:55

标签: sql

所以我无法使用临时表来完成此任务。基本上我需要根据可用的下一个生效日期创建一个考试日期。

因此,对于一个代码,我有10个费用表,只有生效日期。我试着写这个但是没有用,因为它给了一些记录相同的到期日期。我知道需要订购,但我把它放在不同的地方,它仍然给我同样的问题。非常感谢任何帮助

SELECT a.*, 
       ( CASE 
           WHEN (SELECT TOP 1 b.effectivedate - 1 
                 FROM   ietl_profileprocedure b 
                 WHERE  b.effectivedate > a.effectivedate 
                   AND  a.profilesid = b.profilesid) IS NULL THEN (SELECT 
           Dateadd(mm, Datediff(mm, 0, Getdate()) + 1, -1)) 
           ELSE (SELECT TOP 1 b.effectivedate - 1 
                 FROM   ietl_profileprocedure b 
                 WHERE  b.effectivedate > a.effectivedate 
                   AND  a.profilesid = b.profilesid) 
         END ) AS 'ExpDate' 
FROM   ietl_profileprocedure a 
WHERE  profilesid = '4197' 
  AND  procedurecode = '90685' 

1 个答案:

答案 0 :(得分:0)

谢谢你胡安我抬头看着领先和滞后,能够拿出下面的代码来满足我的需求!现在我可以发布一些日期,并找到当时应该更容易与ProcedureCode相关的金额

SELECT s.ProfileSID,s.ProcedureCode,s.Amount,cast(s.EffectiveDate as date)     as EffectiveDate ,
cast(isnull(dateadd(day,-1,LEAD(EffectiveDate) OVER (ORDER BY     ProfileSID,ProcedureCode,EffectiveDate
)),getdate())as date) ExpDate
FROM iETL_ProfileProcedure s
WHERE ProfileSID IN ('4197')and ProcedureCode = '90685'