建立一表,其栏位有账户、日期、余额,以账户+日期作为主键值,日期需精确到秒,以防止一天内有多次交易 若某账户有发生存取作业,则添加一笔记录 100天后查询:select 账户、日期(只显示日期)、余额 from 表 group by 过滤掉时间的日期
即:select 账户,convert(char(10),日期,101),余额 from 表 group by convert(char(10),日期,101)
即:select 账户,convert(char(10),max(日期),101),余额 from 表 group by convert(char(10),日期,101)
隻需保証同一帳戶所取用的余額的時間為最大的就可以了 select a.帐户,b.时间(date),a.min(余额) FROM 表 as a,(select 帳戶,Max(時間) as 時間 from 表 group by 帳戶,時間)as b where a.帳戶=b.帳戶 and a.時間=b.時間
select 帐号,余额,时间 from 表 where 时间 in(select max(时间) from 表 group by 帐号)
select 帐号,日期,余额 from 表 where min(余额)<=100$ and 日期 between '当前日期-100' and '当前日期'
考虑一个帐户,任何一天的余额也就是<=那天的最大时刻的余额, 开始时时间必定最小,假如字段为 帐户,时间,余额,则任何一天所有帐户的余额为 SELECT A.帐户,A.余额 FROM 帐户表 A , (SELECT 帐户,MAX(时间) FROM 帐户表 WHERE 时间<=查询时间 GROUP BY 帐户) B WHERE A.帐户=B.帐户 用一WHILE语句,查询时间从第1天到第100天,运行以上查询即可
:) 最简单的办法: 向消费记录中追加记录时利用触发器向余额表中插入记录余额信息,查找某天的信息直接查询余额表中之前最近的余额信息就可以啦,连累计都省掉了,若在指定日期之前没找到余额记录的自然没有消费。 select 用户名,余额 from 用户表,余额表 where 用户表.用户ID*=余额表.用户ID having 余额表.时间=max(余额表.时间)。 若不利用触发器维护余额表,就要麻烦一点了,要用语句统计指定日期之间的消费表信息。即 select 用户名,100 - sum(isnull(消费表.消费金额,0)) from 用户表,消费表 where 用户表.用户ID*=消费表.用户ID and 日期<=指定日期 group by 消费表.用户ID,用户名. 要输出所有的账户每天的信息,只需一简单循环向临时表中插值就可以了。
每次支出触发update,然后向表中insert一条记录。
若某账户有发生存取作业,则添加一笔记录
100天后查询:select 账户、日期(只显示日期)、余额 from 表 group by 过滤掉时间的日期
select a.帐户,b.时间(date),a.min(余额) FROM 表 as a,(select 帳戶,Max(時間) as 時間 from 表 group by 帳戶,時間)as b
where a.帳戶=b.帳戶 and a.時間=b.時間
where 时间 in(select max(时间) from 表 group by 帐号)
开始时时间必定最小,假如字段为 帐户,时间,余额,则任何一天所有帐户的余额为
SELECT A.帐户,A.余额
FROM 帐户表 A ,
(SELECT 帐户,MAX(时间) FROM 帐户表
WHERE 时间<=查询时间 GROUP BY 帐户) B
WHERE A.帐户=B.帐户
用一WHILE语句,查询时间从第1天到第100天,运行以上查询即可
最简单的办法:
向消费记录中追加记录时利用触发器向余额表中插入记录余额信息,查找某天的信息直接查询余额表中之前最近的余额信息就可以啦,连累计都省掉了,若在指定日期之前没找到余额记录的自然没有消费。
select 用户名,余额
from 用户表,余额表
where 用户表.用户ID*=余额表.用户ID
having 余额表.时间=max(余额表.时间)。
若不利用触发器维护余额表,就要麻烦一点了,要用语句统计指定日期之间的消费表信息。即
select 用户名,100 - sum(isnull(消费表.消费金额,0))
from 用户表,消费表
where 用户表.用户ID*=消费表.用户ID
and 日期<=指定日期
group by 消费表.用户ID,用户名.
要输出所有的账户每天的信息,只需一简单循环向临时表中插值就可以了。
余额表.时间<=指定日期