0

我目前有一张按 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                  |
+-----+-------------------------+

任何帮助将不胜感激。谢谢!

4

1 回答 1

1

除非我遗漏了一些东西,否则您应该能够使用以下内容,将聚合函数与sum()a 一起应用:GROUP BYSID

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;
于 2013-05-17T14:27:52.883 回答