加入表和过滤并获取聚合函数sql访问

Posted

技术标签:

【中文标题】加入表和过滤并获取聚合函数sql访问【英文标题】:join table and filter and take aggregrate function sql access 【发布时间】:2013-05-21 04:04:59 【问题描述】:

是否可以在 MS 访问中加入两个表,过滤数据并采取聚合功能?我有两张桌子

Inv_details:invnum,itmcde,qnt,price  
Inv_summary:invnum,date,total  

我需要加入这些表格并使用日期范围过滤它们,并通过 itmcde 获得 qnt 和价格订单的总和。

我尝试过这样的事情。

SELECT inv.itmcde,SUM(inv.qnt),SUM(inv.price) FROM (SELECT inv_s.invnum,inv_s.date,inv_d.itmcde,inv_d.total FROM Inv_summary as inv_s INNER JOIN Invoice_details as inv_d ON inv_d.invnum =inv_s.invNum WHERE inv_s.date BETWEEN  #3/4/2013# And #5/16/2013# ) as inv ORDER BY inv.itmcde

但这不起作用。

【问题讨论】:

【参考方案1】:

试试

SELECT d.itmcde,
       SUM(d.qnt) AS qnt,
       SUM(d.price) AS price
  FROM Inv_summary s INNER JOIN Inv_details d 
    ON d.invnum = s.invnum 
 WHERE s.date BETWEEN #3/4/2013# AND #5/16/2013# 
 GROUP BY d.itmcde
 ORDER BY d.itmcde

SQLFiddle 虽然这个小提琴适用于 SQL Server,但同样的一般规则应该适用于 MS Access

【讨论】:

我试过这个并且有同样的错误You tried to execute a query that does not include the specified expression itmcde as part of an aggregate function Inv_details 我有复合主键(invnum,itmcde)。请提前帮助我 @Ravi 查看更新的答案,还提供了 sqlfiddle 来展示它的工作原理。虽然这个小提琴适用于 SQL Server,但同样的一般规则应该适用于 MS Access。

以上是关于加入表和过滤并获取聚合函数sql访问的主要内容,如果未能解决你的问题,请参考以下文章

聚合 SQL 函数以仅从每个组中获取第一个

如何通过窗口函数过滤聚合函数的 SQL 语句中的行?

如何使用单个 SQL 聚合函数查询为同一个聚合函数获取多个结果?

为啥sql查询语句中的count(*)等聚合函数可以放在having后面,而不能放在where后面?

聚合函数表达式放在`FROM`子句中

聚合函数并在 2 个条件下加入