Access中的SUM和Pivot

时间:2013-05-17 14:23:54

标签: sql ms-access

我目前有一张表格,其中包含SID列出的个别交易价格:

+-----+-----------+
| SID | Item Cost |
+-----+-----------+
| 001 | $1.50     |
| 002 | $2.25     |
| 003 | $3.50     |
| 002 | $5.80     |
| 002 | $1.00     |
| 003 | $20.00    |
+-----+-----------+

我还有一个查询按SID列出交易的查询,其中项目与特定类型(AlaCarte)匹配,并指示每个项目的价格。

SELECT April2013.SID, April2013.Price, MenuItems.MealType
FROM April2013 LEFT JOIN MenuItems ON MenuItems.Item = April2013.Item
WHERE MenuItems.MealType = 'AlaCarte';

我想通过SID列出这些,这样就会有每个SID的列表,并且会对每个SID的所有事务进行总结。

+-----+-------------------------+
| SID | Sum of all Transactions |
+-----+-------------------------+
| 001 | $1.50                   |
| 002 | $45.00                  |
| 003 | $23.25                  |
+-----+-------------------------+

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

除非我遗漏了某些内容,否则您应该可以使用以下内容将汇总函数sum()应用于GROUP BY SID

SELECT April2013.SID, Sum(April2013.Price) Total
FROM April2013 
INNER JOIN MenuItems 
  ON MenuItems.Item = April2013.Item
WHERE MenuItems.MealType = 'AlaCarte'
GROUP BY April2013.SID;

您会注意到我将您的查询从LEFT JOIN更改为INNER JOIN,因为您在MenuItems的WHERE子句上有一个过滤器。这将仅返回两个表中的匹配行。

如果要返回所有April2013行,则将LEFT JOIN查询更改为以下内容,将WHERE过滤器移动到JOIN条件。:

SELECT April2013.SID, Sum(April2013.Price) Total
FROM April2013 
LEFT JOIN MenuItems 
  ON MenuItems.Item = April2013.Item
  AND MenuItems.MealType = 'AlaCarte'
GROUP BY April2013.SID;
相关问题