簡體   English   中英

總結 T-SQL 中的連續值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM