1, 2个表:A,B,各自有一列日期。A中a_date列 是客户论坛注册日期,B中b_date 列是工作日。
2,A中日期包含B我想通过1, a_date中每一个日期在b_date中的位置x,
               2,让x沿着b_date往后取10个工作日M    
               3,于是,每个a_date中的数都对应一个M               M列就是我想要的东西。
怎么办呢?求助求助

解决方案 »

  1.   

    一下第一个表是A表格中截取的一部分,每天的客户有很多个,他们注册的时间是a_date
                                                                                                               a_date
    2546 25900 10091341 20150410 10091341 20150402
    2547 14000 10091341 20150422 10091341 20150402
    2548 50000 10091342 20150410 10091342 20150402
    2549 50000 10091342 20150422 10091342 20150402
    2550 50000 10091342 20150415 10091342 20150402
    2551 50000 10091342 20150409 10091342 20150402
    2552 2000 10091347 20150403 10091347 20150402
    2553 3000 10091347 20150402 10091347 20150402
    2554 2000 10091347 20150416 10091347 20150402
    2555 5000 10091347 20150414 10091347 20150402
    2556 10000 10091347 20150422 10091347 20150402B表截取一部分如下 :  是工作日
    1 20160104
    2 20160105
    3 20160106
    4 20160107
    5 20160108
    6 20160111
    7 20160112
    8 20160113
    9 20160114
    10 20160115
    11 20160118
    12 20160119
    13 20160120
    我想让a_date 沿着B的顺序,加十天。
     例如,a_date 为20160106的话,那么先找到它在B中的位置:3,
                                                                 再往后算十个工作日,也就是B中的位置13, 20160120
    20160120 就是我要的数据
    把这个数据排列到A中的a_date后边。   
      

  2.   

    一下第一个表是A表格中截取的一部分,每天的客户有很多个,他们注册的时间是a_date
                                                                                           a_date
    2546 25900 10091341 20150410 10091341 20150402
    2547 14000 10091341 20150422 10091341 20150402
    2548 50000 10091342 20150410 10091342 20150402
    2549 50000 10091342 20150422 10091342 20150402
    2550 50000 10091342 20150415 10091342 20150402
    2551 50000 10091342 20150409 10091342 20150402
    2552 2000 10091347 20150403 10091347 20150402
    2553 3000 10091347 20150402 10091347 20150402
    2554 2000 10091347 20150416 10091347 20150402
    2555 5000 10091347 20150414 10091347 20150402
    2556 10000 10091347 20150422 10091347 20150402B表截取一部分如下 :  是工作日
    1 20160104
    2 20160105
    3 20160106
    4 20160107
    5 20160108
    6 20160111
    7 20160112
    8 20160113
    9 20160114
    10 20160115
    11 20160118
    12 20160119
    13 20160120
    我想让a_date 沿着B的顺序,加十天。
     例如,a_date 为20160106的话,那么先找到它在B中的位置:3,
                                                                 再往后算十个工作日,也就是B中的位置13, 20160120
    20160120 就是我要的数据
    把这个数据排列到A中的a_date后边。   
      

  3.   

    不好意思   那个a_date 没有对好位置。   a_date 就是A中最后一列。
      

  4.   

    INSERT INTO TABLE_A
      (a_date)
    VALUES
      (a_date +
       (SELECT b_date
          FROM TABLE_B
         WHERE b.rowid = (SELECT b.rowid + 10
                            FROM TABLE_A a, TABLE B b
                           WHERE a.a_date = (+) b.b_date
                                 AND a_date = '20160106')))
      

  5.   

    INSERT INTO TABLE_A
      (a_date)
    VALUES
      (a_date +
       (SELECT b_date
          FROM TABLE_B
         WHERE b.rowid = (SELECT b.rowid + 10
                            FROM TABLE_A a, TABLE B b
                           WHERE a.a_date = (+) b.b_date
                                 AND a_date = '20160106'))) WHERE a_date = '20160106'
    刚才忘了加条件。sorry
      

  6.   

    真厉害!! 虽然没看太懂。
    对了哥,那个'20160106'  只是一个举例,我要所有的 a-date  都沿着b-date 往上加10个工作日,这个咋搞的
      

  7.   


    写个函数吧。 具体的格式不会的话可以百度。如果不用函数的纯sql 应该也有,但是我不会写
      

  8.   

    select d.a_date,t.b_date
    from(
    select c.a_date,b.rowid+10 rowid
    from 
    (
    select a.a_date
    from a ) c 
    left join b 
    on b.b_date=c.a_date ) d
    left join b as t on t.rowid= d.rowid
      

  9.   


    不建议使用 rowid + 10 这样的语法,中间可能存在跳号的现象;
      

  10.   

    先 用连接吧b表的值在a表'中的位置 先标记出来,然后 用row_number()over 通过分页的方式 给 刚才 标记的 位置 下取10行就可以了。
      

  11.   


    不建议使用 rowid + 10 这样的语法,中间可能存在跳号的现象;确实是欠考虑了