设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[查询] 求助,关于交叉查询的问题

[复制链接]
跳转到指定楼层
1#
发表于 2009-3-9 01:06:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
希望用Access做出一个待摊费用的明细报表,用到了交叉查询可以直观的看出每个月的分摊费用,可是怎么完成列的汇总,我试了论坛上的例子,可惜没有成功.
按照查询中的Query_Contract这个格式,最后一行凡是列为数字的就汇总,不是数字的就留空.
还有能不能将列的按照日期大小排列?
谢谢赐教~!

本帖子中包含更多资源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2009-3-9 13:28:27 | 只看该作者
  1. TRANSFORM Sum(Amount) AS Amount之总计
  2. SELECT Account_No2, Account_Name, Description, Crt_DateFrom, Crt_DateTo, Sum(Amount) AS [Sub-Total], CCur(Avg(Round([Amount],0))) AS Monthly
  3. FROM (
  4.         SELECT a.Account_No2, a.Account_Name, c.Description, c.Crt_DateFrom, c.Crt_DateTo, format(Trn_Date,'yyyy-mm-00') as CMonthID,(c.Amount)
  5.         FROM Table_Account a INNER JOIN Table_Contract c ON a.Account_No = c.Account_No
  6.         WHERE (((c.Trn_Date)>#1/1/2008#))
  7.         UNION all
  8.         SELECT 'total' as Account_No2, null as Account_Name, null as Description, null as Crt_DateFrom , null as Crt_DateTo,
  9.         format(Trn_Date,'yyyy-mm-00') as CMonthID, Sum(c.Amount)
  10.         FROM Table_Account a INNER JOIN Table_Contract c ON a.Account_No = c.Account_No
  11.         WHERE c.Trn_Date>#1/1/2008#
  12.         GROUP BY  format(Trn_Date,'yyyy-mm-00')
  13. )
  14. GROUP BY Account_No2, Account_Name, Description, Crt_DateFrom, Crt_DateTo
  15. ORDER BY CMonthID DESC
  16. PIVOT CMonthID;
复制代码

******************
*  一切皆有可能  *
******************

.
ACMAIN - Access论坛回贴准则(个人).
.

.
QQ群 48866293 / 12035577 / 7440532 / 13666209
http://forum.csdn.net/BList/OtherDatabase .
http://www.accessbbs.cn/bbs/index.php .
http://www.accessoft.com/bbs/index.asp .
http://www.access-programmers.co.uk/forums .
http://www.office-cn.net .
.
http://www.office-cn.net/home/space.php?uid=141646 .

评分

参与人数 1经验 +5 收起 理由
Threaten + 5

查看全部评分

3#
 楼主| 发表于 2009-3-9 15:40:58 | 只看该作者
呵呵,太感谢了,老师您太好了!
4#
 楼主| 发表于 2009-3-9 17:18:47 | 只看该作者
WHERE (((c.Trn_Date)>#1/1/2008#))中如果要求1/1/2008是一个窗体控件的值怎么做到?
我直接修改将1/1/2008修改成Forms!Form_Name.TextboxName,可是提示日期语法错误,然后我将Where整句删除,用子窗体Filter = strWhere, FilterOn=True,也不行。。。望赐教。。。谢谢
5#
 楼主| 发表于 2009-3-10 01:07:18 | 只看该作者
本帖最后由 Threaten 于 2009-3-10 01:08 编辑


将ACMAIN_CHM 大大给的查询拆分成了两个,其中的Query_Contract_Sub中就可以使用控件作为条件查询,但是Query_Contract就不行,提示:
Microsoft Jet数据库引擎不能将'[Forms]![Form_Contract].[TB_TrnDate]'识别为一个有效的字段名或表达式
请问这是为什么啊?
还有就是查询中自动会加上. AS [%$##@_Alias],这句是什么意思呢?

谢谢大大解答

本帖子中包含更多资源

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

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 03:41 , Processed in 0.091035 second(s), 31 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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