IF EXISTS(SELECT * FROM SYS.TABLES WHERE NAME='SPD') DROP TABLE SPD; WITH CTE1 AS ( SELECT IIF(PD_DueDT>=ISNULL(PD_DebitSuccDT,'9999-12-31'),0,1) AS FLAG/逾期FLAG/, ROW_NUMBER() OVER(PARTITION BY PD_EFH_SN ORDER BY PD_Termth) AS ID/期次序号/, MAX(PD_Termth) OVER (PARTITION BY PD_EFH_SN)AS CurrID/当前最大期次序号/, * FROM PD WHERE PD_DueDT<=GETDATE() AND PD_Termth>0 ), CTE2 AS ( SELECT SUM(FLAG) OVER(PARTITION BY PD_EFH_SN ORDER BY PD_Termth ROWS UNBOUNDED PRECEDING) AS AccuFlag/累计逾期期次/, * FROM CTE1 ), CTE3 AS ( SELECT ID-AccuFlag AS FlagGrp/逾期分组/, * FROM CTE2 ), CTE4 AS ( SELECT SUM(FLAG) OVER (PARTITION BY PD_EFH_SN,FlagGrp) AS CountFlag/分组计数/, * FROM CTE3 WHERE FLAG=1 ), CTE5 AS ( SELECT MAX(CountFlag) OVER (PARTITION BY PD_EFH_SN) AS MaxContFlag/最大连续/, MAX(AccuFlag) OVER (PARTITION BY PD_EFH_SN) AS TotFlag/历史累计/, IIF(ID=PD_TotTerm,CountFlag,0) AS CurrContFlag/当前累计/, ROW_NUMBER() OVER (PARTITION BY PD_EFH_SN ORDER BY PD_Termth DESC) AS CurrTermth, * FROM CTE4 ) SELECT DISTINCT PD_EFH_SN,MaxContFlag,TotFlag,CurrContFlag,'XFY' AS DataSource INTO SPD FROM CTE5 WHERE CurrTermth=1
连续逾期
原创Kassadar ©著作权
文章标签 连续 51cto 文章分类 SQL Server 数据库
下一篇:Ansible常用内置属性
-
python列表连续日期 python 生成连续日期数据
输入为一串日期的长字符串,每个日期之间使用 "," 分隔开。
算法 字符串 日期转换 分隔符