|
大家好。我正在给老板做一个报告,用如下的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
|