2013-05-17 2 views
0

я в настоящее время есть таблица с индивидуальными ценами сделок, перечисленных SID:SUM и Pivot в Access

+-----+-----------+ 
| 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

Если меня не хватает чего-то, вы должны быть в состоянии использовать следующие, применяет функцию совокупного sum() с 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, потому что у вас есть фильтр в предложении WHERE для MenuItems. Это вернет только совпадающие строки в обеих таблицах.

Если вы хотите вернуть все April2013 строки, то будет изменять LEFT JOIN запрос к следующему, который перемещает WHERE фильтр с условием РЕГИСТРИРУЙТЕСЬ .:

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; 
Смежные вопросы