SQL-将不同列中的日期聚合到月/年表中

SQL-将不同列中的日期聚合到月/年表中,sql,pivot,aggregate-functions,Sql,Pivot,Aggregate Functions,因此,我有一个“订单”表,其中列出了每个订单的“订购”和“发货”日期。 这些是定制产品,完成订单需要1周时间 这是我的表格中非常有代表性的一张: 我想将其汇总到一个表中,以便查看在运行报告时指定的日期范围内,每月订购和发货的订单数量,并且我想自动填充月份和年份,而无需对每个月份和年份进行硬编码: 使用SQL执行此操作的最佳方法是什么 我最终希望将聚合表放入SSRS报告中,以便您可以在需要时每年进行扩展/折叠 众所周知,日期/时间函数依赖于数据库。但以下是一种典型的方法: select yyyy,

因此,我有一个“订单”表,其中列出了每个订单的“订购”和“发货”日期。 这些是定制产品,完成订单需要1周时间

这是我的表格中非常有代表性的一张:

我想将其汇总到一个表中,以便查看在运行报告时指定的日期范围内,每月订购和发货的订单数量,并且我想自动填充月份和年份,而无需对每个月份和年份进行硬编码:

使用SQL执行此操作的最佳方法是什么


我最终希望将聚合表放入SSRS报告中,以便您可以在需要时每年进行扩展/折叠

众所周知,日期/时间函数依赖于数据库。但以下是一种典型的方法:

select yyyy, mm, sum(num_ordered), sum(num_shipped)
from ((select year(ordered) as yyyy, month(ordered) as mm, count(*) as num_ordered, 0 as num_shipped
       from orders
       group by year(ordered), month(ordered)
      ) union all
      (select year(shipped) as yyyy, month(shipped) as mm, 0 count(*) as num_shipped
       from orders
       group by year(shipped), month(shipped)
      ) 
     ) ym
group by yyyy, mm;

用您正在使用的数据库标记您的问题。