[英]Summarizing consecutive values in T-SQL
我有一個關於 T-SQL 的問題:
我有我的保險客戶的數據庫,他們有合同義務每月支付公司保險費。 數據集的示例如下所示:
我有日期和 client_id 以及 overdue_flag。 后者是二進制的:0 如果給定的客戶沒有逾期付款,則 1 如果他/她有。 問題:我想創建一個過期月份的摘要(見圖 2)。
如果是客戶逾期的第一個月,則應為 1,如果是第二個月,則為 2,依此類推。 但是,如果客戶干凈(使逾期付款順利)它應該回到 0,如果同一個客戶再次逾期,逾期月份的計數應該從 1 重新開始計數。換句話說:我只想要對連續逾期的月份求和。
在此先感謝您的幫助!
使用累積總和按每行之前的非逾期月數定義組。 然后為過期期間的row_number()
:
select t.*,
(case when overdue_flag = 1
then row_number() over (partition by client_id, grp, overdue_flag order by date)
end) as months_overdue
from (select t.*,
sum(1 - overdue_flag) over (partition by client_id order by date) as grp
from t
) t
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.