目前有客户开户信息表,表结构如下:
客户账号        客户姓名 开户日期
10321165 张一        20000123
10330256 张二        20000125
… … …
10340025 张三        20011201
10340252 张四        20011202
10340252 张五        20011203
… … …
10350625 张六         20171222
10350626 张七        20171223
… … …
以上表:客户账号唯一,开户日期不唯一,现在比如取出:张三的开户日期是:20011201,求此表中自20011201开始往后到20171231之间有多少个不同的日期天数(因为表中有的自然日是没有开户记录的)。
要的结果结构如下:
客户账号 、客户姓名、开户日期、在其开户日期开始往后表中不同日期天数

解决方案 »

  1.   

    客户账号 fid
    客户姓名 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;
    这样就可以了。
    给你参考了~~~
      

  2.   

    从字面的需求上看, count(distinct ) 即可
      

  3.   

    select a.bank_no,
           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