SQL: Group By только часть таблицы в Access - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь использовать SQL в Access, чтобы получить запрос, где:
1) Я отфильтровываю фрукты, у которых нет продаж.
2) Я суммирую продажи для разных фруктов и показываю результат накаждая строка

Начало:
Start

Результат:
End Result

Я использовал приведенный ниже код, но он не очень близок к тому, что я хочу, так как я также хочу фрукты N °, которые не имеют продаж для фруктов, которые имеют продажи.

SELECT MySheet.Fruit, MySheet.[Fruit N°], SUM(Sales)
FROM MySheet
GROUP BY Fruit, [Fruit N°]
HAVING SUM(Sales) > 0;

Есть идеи, как исправить мой код, чтобы добраться до двух моих пунктов 1) и 2)?

Ответы [ 3 ]

0 голосов
/ 22 мая 2018
SELECT
  MySheet.Fruit, MySheet.[Fruit N°], summary.totalSales
FROM
  MySheet
INNER JOIN
(
  SELECT Fruit, SUM(Sales)  AS totalSales
  FROM MySheet
  GROUP BY Fruit
)
  summary
    ON summary.Fruit = MySheet.Fruit
WHERE
  summary.totalSales > 0
0 голосов
/ 22 мая 2018

Вы можете использовать подзапрос, чтобы выполнить группировку за вас:

SELECT
  MySheet.Fruit,
  MySheet.[Fruit N°],
  s.FruitSales
FROM MySheet m
INNER JOIN (
  SELECT
    Fruit,
    SUM(Sales) AS FruitSales
  FROM MySheet
  GROUP BY Fruit
  HAVING SUM(Sales) > 0
  ) s
ON m.Fruit = s.Fruit
0 голосов
/ 22 мая 2018

Вы хотите subquery:

SELECT S.Fruit, S.[Fruit N°], 
       (SELECT SUM(Sales) 
        FROM MySheet S1
        WHERE S1.Fruit = S.Fruit
       ) TotalSales
FROM MySheet S
WHERE EXISTS (SELECT 1 
              FROM MySheet 
              WHERE Fruit = S.Fruit 
              HAVING SUM(Sales) > 0
             );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...