增加一个字段'序号' 序号,用户名,日期,存款,取款,余额select 用户名,日期,余额 from table where 序号 in (select max(序号) from table group by 用户名)
access数据库, 该日期字段是日期时间型而且所有记录是顺序添加的,
不好意思, 前面写的时候还没看到你对说明的更新.更新如下: 增加一个字段'序号' 序号,用户名,日期,存款,取款,余额select 用户名,日期,余额 from table where 序号 in (select max(序号) from table group by 用户名,日期)
或者日期字段,不是赋给它Date()值,而是赋给它Now()。 这样就可以用 SELECT Max(日期) AS 日期, 用户名, Last(余额) AS 余额 FROM 你的表 GROUP BY 用户名, DateValue(日期);
表结构设计有问题,最好加一个ID顺序号,这样才好找出。 当然,如果已经这么用了,只好找出该日期的所有记录,然后Last一下,找出那条了 Var LastName:String; LastJE:Real; Begin With Query Do Begin Close; SQL.Clear; SQL.Add('select * from Tab1'); SQL.Add(' Where TheDate='''+EditYear.Text+EditMonth.Text+EditDay.Text+''''); Open; Last; LastName:=FieldByName('Name').ASString; LastJE:=FieldByName('Money').ASFloat; Close; End; End;
select sum(存款)from 表 group by 日期 order by 日期
又错了,应该是这样: SELECT A.* FROM 你的表 A,( SELECT Max(日期) AS 日期B, 用户名 FROM 你的表 GROUP BY 用户名, DateValue(日期)) B WHERE A.日期=B.日期 AND A.用户名=B.用户名就搞定! 首先在子查询中找出每个日期里的最大时间记录 然后在表中找出符合这个时间和用户名的记录
不会使这个意思吧?
不是这个意思用户名,日期,,,存款,取款,余额
张三 20021211 100 100.00
张三 20021211 100 200.00
张三 20021212 400 600.00sql得出用户名,日期,,,余额
张三 20021211 200.00
张三 20021212 600.00即每一天最后一笔记录的余额
FROM 你的表
GROUP BY 用户名,日期
group by 用户名,日期
增加一个字段'序号',变成
序号,用户名,日期,存款,取款,余额
然后:select 用户名,日期,余额 from table
where 序号 in (select max(序号),用户名 from table
group by 用户名)
序号,用户名,日期,存款,取款,余额select 用户名,日期,余额 from table
where 序号 in (select max(序号) from table
group by 用户名)
该日期字段是日期时间型而且所有记录是顺序添加的,
增加一个字段'序号'
序号,用户名,日期,存款,取款,余额select 用户名,日期,余额 from table
where 序号 in (select max(序号) from table
group by 用户名,日期)
这样就可以用
SELECT Max(日期) AS 日期, 用户名, Last(余额) AS 余额
FROM 你的表
GROUP BY 用户名, DateValue(日期);
当然,如果已经这么用了,只好找出该日期的所有记录,然后Last一下,找出那条了
Var
LastName:String;
LastJE:Real;
Begin
With Query Do
Begin
Close;
SQL.Clear;
SQL.Add('select * from Tab1');
SQL.Add(' Where TheDate='''+EditYear.Text+EditMonth.Text+EditDay.Text+'''');
Open;
Last;
LastName:=FieldByName('Name').ASString;
LastJE:=FieldByName('Money').ASFloat;
Close;
End;
End;
SELECT A.*
FROM 你的表 A,(
SELECT Max(日期) AS 日期B, 用户名 FROM 你的表
GROUP BY 用户名, DateValue(日期)) B
WHERE A.日期=B.日期 AND A.用户名=B.用户名就搞定!
首先在子查询中找出每个日期里的最大时间记录
然后在表中找出符合这个时间和用户名的记录
select max(余额) from 表 group by 日期 order by 日期