Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在Access中计算投资组合绩效_Sql_Ms Access_Ms Access 2010 - Fatal编程技术网

Sql 如何在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中完成。到目前为止,我的尝试在获取结束日期的简单任务上已经失败了。故障信息为: “您试图执行的查询不包括

我发现这个问题对谷歌来说特别难,因为搜索词会给出匹配的结果,但不是我想要的

我试图使用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))