如何实现这样的统计?(100分)

  • 主题发起人 主题发起人 小行
  • 开始时间 开始时间

小行

Unregistered / Unconfirmed
GUEST, unregistred user!
已知表数据如下
f1 f2
a 1
a 2
a 3
b 1
b 1

统计结果为:
f1 f2
a 1
a 3
a 6
b 1
b 2
 
先判断F1有无变化,若无,将上一行的F2加到本行.
 
请具体点,用SQL语句还是CURSOR?
 
不太清楚你要统计的规则是什么
是统计A的最大、最小值,和A的总和吗?
 
用Order By f1 不行吗?
 
假如你用的不是桌面数据库,SQL语句如下:
select f1,(select sum(f2) as jrq from TABLE aa where aa.f1=bb.f1 and aa.f2<=bb.f2) as f2
from TABLE bb
order by f1,f2

在SQL_SERVER 2000中通过!

遗憾的是 假如有重复记录,如你的表中:
b 1
b 1
那么统计的结果将为:
b 2
b 2
因为where aa.f1=bb.f1 and aa.f2<=bb.f2
^^^^ 用到是“ <= ” 算是遗憾!
假如没有重复记录,则会是你想要的结果!
你可以试试~
--------------------
另外,建议解决的办法是 :加上一个自增或唯一的ID字段:
改为
select f1,(select sum(f2) as jrq from TABLE aa where aa.f1=bb.f1 and aa.id<bb.id) as f2
from TABLE bb ^^^^^^^^^^^^^^
order by f1,f2
这样就完美无缺了! [:D]

假如在Oracle数据库中,那么就直接用rowid即可!
 
接受答案了.
 
后退
顶部