目前有客户开户信息表,表结构如下:
客户账号 客户姓名 开户日期
10321165 张一 20000123
10330256 张二 20000125
… … …
10340025 张三 20011201
10340252 张四 20011202
10340252 张五 20011203
… … …
10350625 张六 20171222
10350626 张七 20171223
… … …
以上表:客户账号唯一,开户日期不唯一,现在比如取出:张三的开户日期是:20011201,求此表中自20011201开始往后到20171231之间有多少个不同的日期天数(因为表中有的自然日是没有开户记录的)。
要的结果结构如下:
客户账号 、客户姓名、开户日期、在其开户日期开始往后表中不同日期天数
客户账号 客户姓名 开户日期
10321165 张一 20000123
10330256 张二 20000125
… … …
10340025 张三 20011201
10340252 张四 20011202
10340252 张五 20011203
… … …
10350625 张六 20171222
10350626 张七 20171223
… … …
以上表:客户账号唯一,开户日期不唯一,现在比如取出:张三的开户日期是:20011201,求此表中自20011201开始往后到20171231之间有多少个不同的日期天数(因为表中有的自然日是没有开户记录的)。
要的结果结构如下:
客户账号 、客户姓名、开户日期、在其开户日期开始往后表中不同日期天数
客户姓名 fname
开户日期 fdate
select t.fid,
t.fname,
to_char(t.fdate, 'YYYYMMDD') as fd,
(select count(distinct to_char(a.fdate, 'YYYYMMDD'))
from table1 a
where a.fdate > t.fdate) as ts
from table1 t
order by t.fdate;
这样就可以了。
给你参考了~~~
a.user_name,
min(a.kh_date) as kh_date,
count(distinct(case when a.rn>1 then date else '' end) as gs_date
from
(select bank_no,
user_name,
min(to_char(date,'yyyy-mm-dd')) over(partition by bank_no) as kh_date,
row_number() over(partition by bank_no order by date) rn
from table)a
group by a.bank_no,
a.user_name