首页 > 解决方案 > SQL Server - 获取去年平均值、当年月平均值和当年总平均值

问题描述

我在 SQL Server 中运行一个简单的查询,以获取按月分组的当年平均值,因此它返回 12 行。我需要在第一行输入去年的 TOTAL 平均值,在最后一行输入当年的 TOTAL 平均值,所以它会变成 14 行。

当前结果

这是我的查询:

SELECT 
    COUNT(*) AS mes 
FROM 
    WorkOrder 
WHERE 
    workOrderSource = '02'  
    AND YEAR(workOrderDate) = 2018 
    AND conclusionDate IS NULL 
GROUP BY 
    MONTH(workOrderDate);

我应该如何传递动态年份,并将 2 个额外的行添加到我的查询中,其中包含过去和当前年份的总计?

结果应该有 14 行;第一行是去年 TOTAL 的平均值,最后一行是当年 TOTAL 的平均值

标签: sqlsql-server

解决方案


以这种方式尝试:

  SELECT COUNT(*) AS mes, null
    FROM WorkOrder 
    WHERE workOrderSource = '02'  
      AND YEAR(workOrderDate) = 2018
      AND conclusionDate IS NULL 
    UNION ALL 
    SELECT COUNT(*), MONTH(workOrderDate)
    FROM WorkOrder 
    WHERE workOrderSource = '02' 
      AND YEAR(workOrderDate) = 2019
      AND conclusionDate IS NULL 
    GROUP BY ROLLUP(MONTH(workOrderDate))
    ORDER BY COALESCE(MONTH(workOrderDate), 13)

推荐阅读