设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[查询] 为什么我的用last函数的aggregate query返回的结果不全是最后一个值?

[复制链接]
跳转到指定楼层
1#
发表于 2008-6-3 08:59:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好。我正在给老板做一个报告,用如下的query尝试返回一个总结表,其中settlement_date(交割日)和ann_rate(年利率)。这两个字段我用last函数括起来,想得到最后一个值。请留意为了防止排序错误,我把表格用子查询排好了顺序,按照settlement_date顺序排列。

SELECT
last(t.BROKER) AS broker,
t.ACCOUNT,
last(t.SETTLEMENT_DATE) AS SETTLEMENT_DATE,
t.ISSUER,
Sum(t.PAR_VALUE) AS PAR_VALUE,
last((1/t.disc_rate-1)*IIf(t.account="gcna cad",365,360)/(t.mature_date-t.settlement_date)) AS ann_rate,
t.MATURE_DATE, t.matuRE_DATE-Date() AS DTM
FROM (select * from TRANSACTION order by transaction.settlement_date) as T
GROUP BY ACCOUNT, t.ISSUER, t.MATURE_DATE, t.matuRE_DATE-Date()
having Sum(PAR_VALUE)>0 AND t.MATURE_DATE>=Date()
ORDER BY t.MATURE_DATE;


我把表格"Transaction"和查询“MM_DN"都放在excel文件里面上传了。如文件,last函数返回的第一行是对的,但另外一行last函数返回的却是最早交割日的日期和年利率那一行!
大家可不指教一下究竟是什么出错了呢?

p.s.如果觉得上面的函数有点繁琐的话,如下的sql一样会返回相同的错误结果。
SELECT TRANSACTION.ISSUER, Last(TRANSACTION.SETTLEMENT_DATE) AS LastOfSETTLEMENT_DATE, TRANSACTION.MATURE_DATE
FROM [TRANSACTION]
GROUP BY TRANSACTION.ISSUER, TRANSACTION.MATURE_DATE
ORDER BY TRANSACTION.MATURE_DATE DESC;

本帖子中包含更多资源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2008-6-3 09:20:42 | 只看该作者
先做子查询,再来做last是否可以
3#
 楼主| 发表于 2008-6-3 09:22:34 | 只看该作者
原帖由 ui 于 2008-6-3 09:20 发表
先做子查询,再来做last是否可以

可否详述一下您的意思?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-13 03:24 , Processed in 0.329177 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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