2016-08-29 2 views
2

Попытка суммировать общий продукт, произведенный по типу и суммированный по месяцам/годам.SQL Sum по категориям и группам по месяцам/годам

три таблицы:

  • Order_Line: Идентификация, batch_date_stop, item_id
  • Order_Line_Detail: order_line_id, batched_qty, item_id
  • Mill_Item_Map: item_id, item_class

Работа ниже скрипта но каждый месяц составляет отдельную строку для каждой категории. Я бы хотел, чтобы одна строка имела в общей сложности каждый продукт. Что мне не хватает?

SELECT 
YEAR(OL.batch_date_stop) as [Manf Year], 
MONTH(OL.batch_date_stop) as [Manf Month], 
SUM(case when MIM.item_class is not null then OLD.batched_qty else 0 end)/2000 AS Total, 
SUM(case when MIM.item_class = 'CAKE' then OLD.batched_qty else 0 end)/2000 AS [Cake], 
SUM(case when MIM.item_class = 'PELLET' then OLD.batched_qty end)/2000 AS [Pellet], 
SUM(case when MIM.item_class = 'MINERAL' then OLD.batched_qty end)/2000 AS [Mineral], 
SUM(case when MIM.item_class = 'MIX' then OLD.batched_qty end)/2000 AS [Mix], 
SUM(case when MIM.item_class = 'GRAIN' then OLD.batched_qty end)/2000 AS [Grain] 
FROM Order_Line OL 
JOIN order_line_detail OLD ON OLD.order_line_id = OL.id 
JOIN mill_item_map MIM ON MIM.item_id = OL.item_id 
WHERE YEAR(OL.batch_date_stop) = 2016 and 
OLD.sequence_number = 0 
Group BY MIM.item_class, YEAR(OL.batch_date_stop), MONTH(OL.batch_date_stop) 
ORDER BY YEAR(OL.batch_date_stop), MONTH(OL.batch_date_stop) 

enter image description here

+0

Я не думаю, что когда-либо min.item_class может быть пустым вы делаете внутреннее соединение к нему. – Hogan

ответ

1

Попробуйте использовать только год и месяц в группе

Group BY YEAR(OL.batch_date_stop), MONTH(OL.batch_date_stop) 
+0

Это сработало. Спасибо! – sheehan46

Смежные вопросы