请教一下
在一张表里面ZCB
日期       帐号 总资产 昨日资产
2011-05-01 001  10000  50000
2011-05-02 001  25000  10000昨日资产的值为前一天的总资产传入2个时间参数BEG_DATE,END_DATE如何用SELECT 取出一段时间内的数据,并且保证昨日资产=前一天的总资产。不使用循环实现。select zzc from zcb where date=(select max(date) from zcb where date<beg_date)

解决方案 »

  1.   

    SELECT 取出一段时间内的数据,并且保证昨日资产=前一天的总资产?????
    直接select表,加2个条件,,,一个是时间范围,一个是昨日资产=前一天的总资产
      

  2.   

    --是这样吗
    SELECT a.*
      FROM zcb a, zcb b
     WHERE b.日期 = a.日期 - 1
       AND a.昨日资产 = b.总资产
       AND a.帐号 = b.帐号
       AND a.日期 BETWEEN beg_date AND end_date;
      

  3.   

    日期        帐号 总资产 昨日资产
    2011-05-01 001 10000 50000
    2011-05-02 001 25000 10000想实现先查询出第一条后,第2条的昨日资产取的是前一天的总资产
    然后一条条往后。
    把一段时间的都取出来。
    用循环实现比较简单
    但现在想用SELECT 语句实现。
      

  4.   

    不知道是不是这样:create table zcb
    (
     v_date date,
     v_number  varchar2(200),
     total    number not null default 0 ,
     yes_total number not null default 0
    );insert into ZCB (V_DATE, V_NUMBER, TOTAL, YES_TOTAL)
    values (to_date('01-06-2011', 'dd-mm-yyyy'), '001', 30000, 50000);
    insert into ZCB (V_DATE, V_NUMBER, TOTAL, YES_TOTAL)
    values (to_date('02-06-2011', 'dd-mm-yyyy'), '002', 25000, 10000);
    insert into ZCB (V_DATE, V_NUMBER, TOTAL, YES_TOTAL)
    values (to_date('03-06-2011', 'dd-mm-yyyy'), '003', 60000, 23000);
    insert into ZCB (V_DATE, V_NUMBER, TOTAL, YES_TOTAL)
    values (to_date('04-06-2011', 'dd-mm-yyyy'), '004', 40000, 90000);
    insert into ZCB (V_DATE, V_NUMBER, TOTAL, YES_TOTAL)
    values (to_date('05-06-2011', 'dd-mm-yyyy'), '005', 0, 70000);
    insert into ZCB (V_DATE, V_NUMBER, TOTAL, YES_TOTAL)
    values (to_date('06-06-2011', 'dd-mm-yyyy'), '006', 50000, 60000);
    commit;select 
     * from 
     (
    select distinct
           b.v_date,
           b.v_number,
           b.total,
           case when (b.v_date = t.v_date + 1) then t.total end as yes_total 
     from zcb t,
          zcb b
     ) t
     where t.yes_total is not null
     order by t.v_date