sql-将不同列中的日期聚合到month/year表中

gg58donl  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(430)

所以我有一个“orders”表,列出了每个订单的“ordered”和“shipped”日期。这些是定制产品,需要1周才能完成订单。
这很能代表我的table:

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

使用sql最好的方法是什么?
我最终希望将聚合表放入ssrs报告中,以便您可以在需要时每年展开/折叠。

vsmadaxz

vsmadaxz1#

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

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;

相关问题