我有下面的数据:
客户号 还款日期
000001 2010/01/31
000001 2010/02/28
000001 2010/03/31
000001 2010/05/31
000001 2010/06/30
000001 2010/08/31
000002 2010/01/31
000002 2010/03/31
000002 2010/04/30
000002 2010/05/31
000002 2010/06/30
000002 2010/07/31
......
还款日期在理论上来说应该是每个客户每个月一次。
我想得到的是
客户号 连续还款期数
000001 3
000002 5
........
用SQL怎么实现呢
客户号 还款日期
000001 2010/01/31
000001 2010/02/28
000001 2010/03/31
000001 2010/05/31
000001 2010/06/30
000001 2010/08/31
000002 2010/01/31
000002 2010/03/31
000002 2010/04/30
000002 2010/05/31
000002 2010/06/30
000002 2010/07/31
......
还款日期在理论上来说应该是每个客户每个月一次。
我想得到的是
客户号 连续还款期数
000001 3
000002 5
........
用SQL怎么实现呢
select 客户号,convert(varchar(7),还款日期,120)+'-01' as date from tb order by 客户号 date
),tp1 as (
select a.客户号,a.date from tp a join tb b on a.客户号=b.客户号 and datediff(month,a.date,b.date)=1
)
select a.客户号,count(0) 连续还款期数 from tp1 a group by a.客户号
SELECT A.客户号, COUNT(1) 连续还款期数
FROM (SELECT A.客户号, A.还款日期
FROM 记录表 A, 记录表B
WHERE A.客户号 = B.客户号
AND TRUNC(ADD_MONTHS(A.还款日期, 1), 'MM') = TRUNC(B.还款日期, 'MM')) A
GROUP BY A.客户号