create table QQQ
(
  Q1 NUMBER,
  Q2 NUMBER,
  Q3 VARCHAR2(15)
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
创建如上表,Q3代表日期,q1代表收入,q3代表支出,sql如下:   
SELECT a.q3 日期,a.q1 收入,a.q2 支出,
 CASE 
 WHEN a.rw=1 
 THEN a.q1-a.q2
 ELSE (a.Q1-a.Q2)+(SELECT SUM(tt.q1-tt.q2) FROM (SELECT ROWNUM rw1,a.* FROM (SELECT t.* FROM qqq t ORDER BY q3) a) tt WHERE  rw1<rw)
 END AS 餘額 
  FROM (SELECT ROWNUM rw,a.* FROM (SELECT t.* FROM qqq t ORDER BY q3) a) a

解决方案 »

  1.   

    我的Q3不是日期类型,可能你需要修改一下sql!
      

  2.   

    用上面的表,SQL语句如下:
    select q3 日期, q1 收入, q2 支出, sum(q2-q1) over(order by q3) 餘額 from qqq;
      

  3.   

    select rq,sr,zc,(select sum(sr) - sum(zc) from tab where rq>=t1.rq) ye
    from tab t1
      

  4.   

    没问题喽,刚测试完
    --------------------------------------select 日期,
          (select 收入 from Sales where 日期=c.日期) 收入,
          (select 支出 from Sales where 日期=c.日期) 支出,
          (select sum(收入-支出) from Sales where 日期<=c.日期 ) 餘額 from Sales c  group by 日期 
     
     order by 日期
      

  5.   

    create table sales(日期 datetime,收入 int,支出 int)insert into salesselect '2000/4/2'   ,  50  ,     30
    union
    select '2000/4/7' ,    65 ,      60
    union
    select '2000/4/13'  ,  80,       20
      

  6.   

    select 日期,
           收入,
           支出,
           餘額=(select sum(nvl(收入,'0')-nvl(支出,'0')) from tablename where 日期<=a.日期)
    from tablename
    order by 日期;
      

  7.   

    以上是sqlserver2000中通过以下是9i中通过
    ------------------------------------------------------
    create table sales(日期 datetime,收入 int,支出 int)
    /insert into sales
    values( to_date('2000/4/2','YYYY/MM/DD')   ,  50  ,     30)
    /
    insert into sales
    values( to_date('2000/4/7','YYYY/MM/DD') ,    65 ,      60)
    /
    insert into sales
    values( to_date('2000/4/13','YYYY/MM/DD')  ,  80,       20)
    /select 日期,
          (select 收入 from Sales where 日期=c.日期) 收入,
          (select 支出 from Sales where 日期=c.日期) 支出,
          (select sum(收入-支出) from Sales where 日期<=c.日期 ) 餘額
     from Sales c 
     group by 日期  
     order by 日期
    /drop table sales
    /
      

  8.   

    另外一种更简洁的写法select 日期,
           收入,
           支出,
           (select sum(nvl(收入,'0')-nvl(支出,'0')) from Sales where 日期<=a.日期) 餘額
    from Sales a
    order by 日期;
      

  9.   

    不用建表,這下面寫法行了.
    select 日期,
           收入,
           支出,
           餘額=(select sum(nvl(收入,'0')-nvl(支出,'0')) from tablename b where b.日期<=a.日期)
    from tablename a
    order by a.日期;