【问题标题】:SQL Sum by Category and group by month/yearSQL Sum 按类别和按月/年分组
【发布时间】:2016-08-29 20:48:17
【问题描述】:

尝试按类型汇总制造的总产品并按月/年汇总。

三个表:

  • Order_Line:id、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)

【问题讨论】:

  • 我认为 min.item_class 永远不能为空,您正在对其进行内部连接。

标签: sql sql-server group-by categories


【解决方案1】:

尝试在分组中仅使用年份和月份

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

【讨论】:

    猜你喜欢
    • 2011-07-21
    • 2021-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    相关资源
    最近更新 更多