所以我无法使用临时表来完成此任务。基本上我需要根据可用的下一个生效日期创建一个考试日期。
因此,对于一个代码,我有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'
答案 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'