数据表为以下结构 时间字段 A 数字字段 B
假设 A B
11\01\2005 1
11\01\2005 2
12\01\2005 3
12\01\2005 4
14\01\2005 5
14\01\2005 5
现在要求输出每天的和以及每天的平均. 即
A B C
11\01\2005 3 3
12\01\2005 7 5 (3+7)/2
14\01\2005 10 5 (3+7+10)/4
(就是C字段为 该条记录的 日期 前所有记录B字段的和除该记录的
日期与第一条记录的日期所差的天数) 不知道有没有可以实现这个功能的SQL语句.
如果没有的话,能否告知怎么才可以实现这个功能
假设 A B
11\01\2005 1
11\01\2005 2
12\01\2005 3
12\01\2005 4
14\01\2005 5
14\01\2005 5
现在要求输出每天的和以及每天的平均. 即
A B C
11\01\2005 3 3
12\01\2005 7 5 (3+7)/2
14\01\2005 10 5 (3+7+10)/4
(就是C字段为 该条记录的 日期 前所有记录B字段的和除该记录的
日期与第一条记录的日期所差的天数) 不知道有没有可以实现这个功能的SQL语句.
如果没有的话,能否告知怎么才可以实现这个功能
from 数据表 M, 数据表 N
where N.b<=M.a
group by M.a
select M.a,sum(N.b),sum(N.b)/(datediff(day,min(N.a),M.a) + 1)
from (select distinct a from 数据表) M, 数据表 N
where N.a<=M.a
group by M.a
from (select A,sum(B) as iB from tb group by A) s,
(select distinct A from tb) t, tb q
where q.A<=t.A and s.A=t.A
group by t.A, iB参照 winehero(编程人生)的,这个应该可以了
我怀疑问题出在from (select distinct a from 数据表) M, 数据表 N
这句上.
我试了下,下面这个提示出错(FROM子句语法错误)
strsql = "select s.* from(select distinct a from 数据表) s"
from (select A,sum(B) as iB from 数据表 group by A) s,
(select distinct A from 数据表) t, 数据表 q
where q.A<=t.A and s.A=t.A
group by t.A, iB
我怀疑问题出在from (select distinct a from 数据表) M, 数据表 N
这句上.
我试了下,下面这个提示出错(FROM子句语法错误)
strsql = "select s.* from(select distinct a from 数据表) s"
————————————————————————————————
我的那个经测试(MSSQL)没问题啊
SELECT A FROM TABLE1 GROUP BY AOPEN CUR_ADECLARE DATE_FIRST DATE
DECLARE DATE_THIS DATE
DECLARE SUM_THIS FLOAT
DECLARE SUM_ALL FLOAT
DECLARE AVG_B FLOAT
FETCH NEXT FROM CUR_A INTO DATE_FIRST
SET DATE_THIS = DATE_FIRST
WHILE @@FETCHSTATUS = 0
BEGIN
SET SUM_THIS = (SELECT SUM(B) AS SUM_B FROM TABLE1 WHERE A = DATE_THIS)
SET SUM_ALL = SUM_ALL + SUM_THIS
SET AVG_B = SUM_ALL / (DATEDIFF(DATE_THIS,DATE_FIRST) + 1)
INSERT INTO TABLE2
VALUES ( DATE_THIS,SUM_ALL,AVG_B)
FETCH NEXT FROM CUR_A INTO DATE_THIS
END SELECT * FROM TABLE2
SELECT A FROM TABLE1 GROUP BY AOPEN CUR_ADECLARE @DATE_FIRST DATE
DECLARE @DATE_THIS DATE
DECLARE @SUM_THIS FLOAT
DECLARE @SUM_ALL FLOAT
DECLARE @AVG_B FLOAT
FETCH NEXT FROM CUR_A INTO @DATE_FIRST
SET @DATE_THIS = @DATE_FIRST
WHILE @@FETCHSTATUS = 0
BEGIN
SET @SUM_THIS = (SELECT SUM(B) AS SUM_B FROM TABLE1 WHERE A = @DATE_THIS)
SET @SUM_ALL = @SUM_ALL + @SUM_THIS
SET @AVG_B = @SUM_ALL / (DATEDIFF(@DATE_THIS,@DATE_FIRST) + 1)
INSERT INTO @TABLE2
VALUES ( @DATE_THIS,@SUM_ALL,@AVG_B)
FETCH NEXT FROM CUR_A INTO @DATE_THIS
END SELECT * FROM @TABLE2
我用的ACCSEE 97。
JET 3。51