Sql 如何在Access中计算投资组合绩效
我发现这个问题对谷歌来说特别难,因为搜索词会给出匹配的结果,但不是我想要的 我试图使用MS Access计算股票在给定时间段内的表现 计算示例:Sql 如何在Access中计算投资组合绩效,sql,ms-access,ms-access-2010,Sql,Ms Access,Ms Access 2010,我发现这个问题对谷歌来说特别难,因为搜索词会给出匹配的结果,但不是我想要的 我试图使用MS Access计算股票在给定时间段内的表现 计算示例: 2016年1月1日价格:100.00 2016年2月25日价格:110.00 伪代码: Performance = Ending Price/Starting Price - 1 在Excel中进行计算非常简单,但我似乎无法在MS Access中完成。到目前为止,我的尝试在获取结束日期的简单任务上已经失败了。故障信息为: “您试图执行的查询不包括
- 2016年1月1日价格:100.00
- 2016年2月25日价格:110.00
Performance = Ending Price/Starting Price - 1
在Excel中进行计算非常简单,但我似乎无法在MS Access中完成。到目前为止,我的尝试在获取结束日期的简单任务上已经失败了。故障信息为:
“您试图执行的查询不包括指定的
表达式“MoPo_BM_ID”作为聚合函数的一部分”
更新:
我找到了一个包含一些代码的应用程序,这些代码创建了所需的结果。该示例运行良好,但我尝试根据自己的情况调整它,但收到错误消息“此子查询最多可以返回一条记录”
如何让它显示一条记录?要获得最长工作日期,您需要按选择框中的其他字段分组。因此,您的查询将变为
SELECT
tbl_MoPo_BM.MoPo_BM_ID,
tbl_AMSDB_IndexMFP.Mandat_ID,tbl_MoPo_BM.Launch_Date,
Max([tbl_AMSDB_IndexMFP]![Date]) AS End_Date
FROM
tbl_AMSDB_IndexMFP
INNER JOIN tbl_MoPo_BM ON tbl_AMSDB_IndexMFP.Mandat_ID =
tbl_MoPo_BM.AMSDB_MoPo_Code
GROUP BY
tbl_MoPo_BM.MoPo_BM_ID,
tbl_AMSDB_IndexMFP.Mandat_ID,
tbl_MoPo_BM.Launch_Date,
WHERE (((tbl_MoPo_BM.MoPo_BM_ID)=107))
在不知道您的值/价格字段是什么、启动日期是否为开始日期以及indexMFP表中是否存在重复条目的情况下,我无法编写其余内容来为您的伪性能计算提供答案。我尝试使用您的解决方案,但无法使其正常工作。现在,我在网上发现了一些额外的信息,这些信息在示例中似乎是有效的(我重新创建了它),但当我根据自己的情况调整它时,这些信息就不起作用了。这些子查询完全是错误的。你能告诉我们IndexMFP表中Mandat_ID 6028是什么样子吗?正如我之前所问的,IndexMFP中是否有重复的日期条目用于单个Mandat?
SELECT
tbl_MoPo_BM.MoPo_BM_ID,
tbl_AMSDB_IndexMFP.Mandat_ID,tbl_MoPo_BM.Launch_Date,
Max([tbl_AMSDB_IndexMFP]![Date]) AS End_Date
FROM
tbl_AMSDB_IndexMFP
INNER JOIN tbl_MoPo_BM ON tbl_AMSDB_IndexMFP.Mandat_ID =
tbl_MoPo_BM.AMSDB_MoPo_Code
GROUP BY
tbl_MoPo_BM.MoPo_BM_ID,
tbl_AMSDB_IndexMFP.Mandat_ID,
tbl_MoPo_BM.Launch_Date,
WHERE (((tbl_MoPo_BM.MoPo_BM_ID)=107))