设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 3297|回复: 5
打印 上一主题 下一主题

[查询] 请问数据递减查询怎么用SQL编写

[复制链接]
跳转到指定楼层
1#
发表于 2009-4-9 00:06:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如图和标题所示,再次提前感谢各位

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
推荐
发表于 2009-4-9 13:35:52 | 只看该作者
本帖最后由 todaynew 于 2009-4-9 13:48 编辑




1、查询:
SELECT a.ID, a.组, a.姓名, a.配额, (select sum(b.配额) from 表2 as b
where b.ID<=a.ID and b.组=表1.组) AS 累计, 表1.总额
FROM 表1
INNER JOIN 表2 AS a ON 表1.组=a.组;

2、实得数查询:
SELECT a.ID, a.组, a.姓名, a.配额, a.累计, a.总额, IIf([累计]<=[总额],[配额],IIf(DLookUp("[累计]","[查询]","ID=" & [ID]-1 & " and 组='" & a.组 & "'")<[总额],[总额]-DLookUp("[累计]","[查询]","ID=" & [ID]-1 & " and 组='" & a.组 & "'"),0)) AS 实得数
FROM 查询 AS a;

说明:
1、增加了一个表1,这样可以避免数据冗余;
2、在表2中增加了一个ID字段,便于计算累计数;同时删除了实得数字段,因该字段为计算结果。
3、表1与表2以[组]字段建立一对多关系。
4、删除了表3,该表无用处。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 1 反对 0

使用道具 举报

2#
发表于 2009-4-9 08:22:41 | 只看该作者
请不要重复发帖
3#
发表于 2009-4-9 11:44:47 | 只看该作者
道理和前一帖处理思路差不多,一会我给你写一下。
5#
发表于 2009-4-9 13:55:14 | 只看该作者
本帖最后由 todaynew 于 2009-4-9 14:04 编辑

将子查询中的条件改为:
where b.ID<a.ID and b.组=表1.组
也可以计算,只是实得数查询写法稍有差异,似乎要简洁一些。这个问题留给你自己考虑,呵呵。

另强烈建议在记录数较多情况下,采用数据集方式来解决问题,这样运算的效率要高很多,不至于造成假死机。
6#
 楼主| 发表于 2009-4-9 18:20:21 | 只看该作者
todaynew,您太热心了,非常感谢。同时非常感谢您的建议
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-4 06:44 , Processed in 0.092266 second(s), 31 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表