Sql MS Access-执行查询时如何添加记录

Sql MS Access-执行查询时如何添加记录,sql,ms-access,Sql,Ms Access,好吧,这很复杂,但我是个新手,所以可能这并不难 我的数据库中有3个表: 客户-包含基金所有客户的列表。一些客户在基金中有多个账户。结构: ID | CliName ------------ 1 | Joe Blogs Holdings 2 | John Doe Investments etc... ClientMap-这基本上有一个所有帐户的列表,另一个字段包含它所属的客户端(拥有该帐户的客户端的ID) 估值-这是每个账户在任何给定日期的价值列表 ID | ValuationDate |

好吧,这很复杂,但我是个新手,所以可能这并不难

我的数据库中有3个表:

客户-包含基金所有客户的列表。一些客户在基金中有多个账户。结构:

ID | CliName
------------
1  | Joe Blogs Holdings
2  | John Doe Investments
etc...
ClientMap-这基本上有一个所有帐户的列表,另一个字段包含它所属的客户端(拥有该帐户的客户端的ID)

估值-这是每个账户在任何给定日期的价值列表

ID | ValuationDate |   Valuation  | AccName
------------
1  |  30/09/2012   |   1,469,524  | Joe Blogs Safe Fund
2  |  30/09/2012   |   1,767,134  | Joe Blogs Risk Fund
3  |  30/09/2012   |   239,561    | John Doe Fund
4  |  30/06/2012   |   1,367,167  | Joe Blogs Safe Fund
5  |  30/06/2012   |   1,637,121  | Joe Blogs Risk Fund
6  |  30/06/2012   |   219,241    | John Doe Fund
好的,我想运行一个查询,从clients表中列出一个选定的客户,并返回所有客户的估值总和。例如,John Doe只有一个帐户,因此查询结果如下所示:

ClientName           |  ValuationDate | Valuation
----
John Doe Investments |   30/09/2012   | 239,561
John Doe Investments |   30/06/2012   | 219,241 
但是,对于Joe博客,查询应该返回如下内容:

ClientName           |  ValuationDate | Valuation
----
Joe Blogs Holdings   |   30/09/2012   | 3,236,658
Joe Blogs Holdings   |   30/06/2012   | 3,004,288
因此,对于每个添加的日期,它都会找到Joe Blogs所有帐户的总数,从而给出总体估值。我该怎么做

希望这是明确的,那些访问专家能够帮助我。 谢谢

到目前为止,我已经有了这一点,但它并没有对每个日期的账目进行汇总,它只是单独列出了这些账目:

SELECT ClientMap.AccName, Clients.ClientName, Valuations.ValuationDate, Valuations.Valuation
FROM (Clients INNER JOIN ClientMap ON Clients.ID = ClientMap.ClientID) INNER JOIN Valuations ON ClientMap.AccName = Valuations.AccName
WHERE (((Clients.ClientName) Like [Which Client?] & "*"));

你应该从阅读
完成后,您将知道在何处以及如何使用聚合函数[如本例中的
sum()


祝您在学习过程中好运

这看起来更像是一个一般的SQL问题,而不是访问特定的问题,因此我在这里添加了SQL标记。好吧,我已经阅读了SQL指南,但我觉得需要的查询非常复杂,因为它使用了“内部联接”和“分组方式”。有人能给我更多的建议吗?
SQL中的“分组依据”
概念的工作原理与现实生活中的工作原理完全相同-如果你有一碗不同的水果,为了获得任何特定类型的计数,你必须按你将选择的任何分组对它们进行分组[type/color/shape…]然后在该分组中对它们进行计数/求和。到目前为止,您的SQL看起来是正确的,正如您已经了解到的,请尝试在该分组中添加
按客户端分组.ClientName,ClientMap.AccName,Valuations.ValuationDate
求和(Valuations.Valuation)
,感谢您迄今为止的帮助。我仍然不能完全确定如何实施你所说的。这就是我尝试的:
选择ClientMap.AccName、Clients.ClientName、Valuations.ValuationDate、Sum(Valuations.Valuation)作为SumOfValuation FROM(Clients-internal-JOIN-ClientMap-ON-ClientMap.ID=ClientMap.ClientID)ClientMap.AccName=Valuations.AccName其中((Clients.ClientName)类似于[哪个客户端?]&“*”)按ClientMap.AccName、ClientName、Valuations.ValuationDate分组
但如果您希望获得Clients.ClientName(不含ClientMap.AccName)的总估价,而不是从
GROUP BY
(和
SELECT
)子句中删除ClientMap.AccName,则它仍会单独列出帐户。SQL现在所做的是为每个不同的
ClientMap.AccName、Clients.ClientName、Valuations.ValuationDate
(您的
GROUP BY
子句中的所有内容)求和(估价)
SELECT ClientMap.AccName, Clients.ClientName, Valuations.ValuationDate, Valuations.Valuation
FROM (Clients INNER JOIN ClientMap ON Clients.ID = ClientMap.ClientID) INNER JOIN Valuations ON ClientMap.AccName = Valuations.AccName
WHERE (((Clients.ClientName) Like [Which Client?] & "*"));