Получить результаты, чтобы показать в одном ряду? - PullRequest
0 голосов
/ 30 октября 2019

Мой сценарий выводит две строки для каждого продукта: одна строка для «Продано», а другая для «Инвентаризация». Я хочу сгруппировать их по продуктам, чтобы для каждого продукта отображалась только одна строка. Я использую оператор WHERE, чтобы показать только один продукт для тестирования. Как только я смогу заставить его работать должным образом, я удалю оператор WHERE.

Это мой код:

SELECT Product_Name, sum(Product_Sold) AS 'Sold', CASE WHEN Item_sold = 0 THEN sum(Product_Inventory) END AS 'Inventory' 
FROM Products 
WHERE Product = 'TOY' 
group by Product_Name

Результат этого:

    Sold    Inventory
TOY 10000   
TOY         10000

Что яхочу это:

    Sold    Inventory
TOY 10000   10000

Ответы [ 2 ]

0 голосов
/ 30 октября 2019

Попробуйте суммировать каждую строку и не использовать регистр с sum ()

    SELECT Product_Name, sum(Product_Sold) AS 'Sold', 
       sum ( CASE WHEN Item_sold = 0 then Product_Inventory else 0 end) AS 'Inventory' 
FROM Products 
WHERE Product = 'TOY' 
group by Product_Name
0 голосов
/ 30 октября 2019

Я думаю, вы хотите условное агрегирование:

SELECT Product_Name, sum(Product_Sold) AS Sold, 
       SUM(CASE WHEN Item_sold = 0 THEN Product_Inventory END) AS Inventory 
FROM Products 
WHERE Product = 'TOY' 
GROUP BY Product_Name;

Ваш указанный запрос должен возвращать ошибку, поскольку Item_sold не является аргументом функции агрегации и не является ключом GROUP BY.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...