设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 1946|回复: 11
打印 上一主题 下一主题

[查询] 关于查询问题,请教高手

[复制链接]
跳转到指定楼层
1#
发表于 2006-6-10 00:12:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这样的查询如何做:

表1                                                                                  表2

日期               货币      部门       代号         金额               负代号          正代号

20060606      01         01          00321      -100.00          0321            0421

20060606      01         01          00421        100.00          0322           0422

20060606      14         01          00322        -400.00

20060606      14         22          00422        400.00

20060606      14         22          00321         -500.00

20060606       14        22          00421          400.00

我想根据表2中的代号对应,表1按货币分组,找出代号后4位和表2对应的纪录,其金额相加不等0,就是将最后两个纪录列出。这样的查询怎么写,请各位高手帮帮忙。

.

[此贴子已经被作者于2006-6-9 16:14:04编辑过]

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2006-6-10 00:19:00 | 只看该作者
将要求结果贴出来看看。
3#
 楼主| 发表于 2006-6-10 00:31:00 | 只看该作者


查询结果:

20060606      14         22          00321         -500.00



20060606       14        22          00421          400.00

因为这两个纪录金额合计不等于0
4#
 楼主| 发表于 2006-6-11 06:16:00 | 只看该作者
急急急,各位高手请帮忙,马上要用,就差这一关了
5#
 楼主| 发表于 2006-6-12 04:26:00 | 只看该作者
这是例子


本帖子中包含更多资源

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

x
6#
 楼主| 发表于 2006-6-12 07:15:00 | 只看该作者
我原来的思路是将表2作为Record,先读出第一条记录,

Set r = CurrentDb.OpenRecordset("表2", dbOpenTable)
r.MoveFirst
Do Until r.EOF

sql查询得到每个代号按货币分组的合计

20060606      01         01          00321        100.00         


20060606      01         01          00421        100.00

20060606      14         22          00321         -500.00

20060606       14        22          00421          400.00   

然后再按货币分组求正负代号值的和是否为0判断,再循环读表2的第二条记录,但用代码写到按货币分组求和判断时,不懂用dsum还是什么,就是差这一关
7#
发表于 2006-6-12 23:42:00 | 只看该作者
详细一点,是否要求部门、货币一致?
8#
 楼主| 发表于 2006-6-13 05:56:00 | 只看该作者
在余额表中的代号例如有00321、10321、20321、00421、10421等,我要做的是先计算(00321、10321、20321)和(00421、10421)按货币、按0321、0421分组的合计数(货币肯定一致,部门不要一致),再按代号对应表的0321、0421对应关系计算0321+0421(以及其他0322、0422等)的和,如果不为0,则列出。
9#
发表于 2006-6-13 06:26:00 | 只看该作者
余额平衡表
10#
发表于 2006-6-13 16:23:00 | 只看该作者
try:

SELECT format(nz(e.dd,0)+nz(d.dd,0),'#0.##') AS cb, *
FROM [SELECT a.正代号, b.*
FROM 代号对应表 AS a, (SELECT 余额表.币别, 余额表.代号, sum(余额表.余额) as dd
FROM 余额表 group by 余额表.币别, 余额表.代号
) AS b
WHERE b.代号='0'+a.负代号]. AS d LEFT JOIN [SELECT 余额表.币别, 余额表.代号, sum(余额表.余额) as dd
FROM 余额表 group by 余额表.币别, 余额表.代号
]. AS e ON (e.代号='0'+d.正代号) AND (d.币别=e.币别);
上述代码可以将不为0的代号列出来。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-14 09:42 , Processed in 0.116318 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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