如何在SQL中筛选具有不同值的不同窗口分区?即分区A将被3过滤,分区B将被5过滤,等等

  • 本文关键字:分区 将被 过滤 等等 SQL 筛选 窗口 sql
  • 更新时间 :
  • 英文 :


我有一笔贷款,有两个不同的分期付款编号(1和2(。在dpd计数器中,一旦值达到0,我就不想要后面的行。因此,在loan_id=1345,分期付款编号=1,秩=5的情况下(一旦dpd达到0(,我想过滤掉后面的行(loan_id=12345,分期付款数量=1,秩=6,S/N 6(。

与loan_id=1345相同,分期付款编号=2,一旦dpd再次达到0(S/N11(,我想过滤掉下面的3行。我有成千上万这样的记录,这是有模式的。排名列也是由windows分区公式创建的。

有没有一种方法可以根据每个loan_id和分期付款编号组合的排名值,只筛选出我想要的每个分区窗口的特定记录集(基于排名值(,并丢弃我不想要的记录集?

分期付款编号<1><2><1><1>3<1>5<1>>2<1><2><2>>[/tr>0<1>//tr><1><2>5
s/N loan_iddpd排名
1 12345 1 0 1
2 12341
3 123423
4 12344
5 12340
6 123446
7 123401
8 1234 2
9 1234 2 2 3
10 2345 2 3 4
11 2345 2 0 5
12 2345 2 4 6
13 2345 2 5 7
14 234568
15 1234 3
16 2345 3
17 12345 3 0 3
18 2345 3 1 4
19 2345 3 2
20 1234 3 3 6

此查询取决于计算的排名列,如果您可以提供如何计算排名,此查询可能会有所不同,但以下是您可以做到的方法:

SELECT * FROM ( 
SELECT * , MAX(CASE WHEN dpd = 0 THEN RANK END) OVER (PARTITION BY loan_id, installment) mr
FROM yourtable
) t
WHERE t.rank <= mr 
ORDER BY loan_id , installment;

相关内容

最新更新