我的数据库的销售记录类型为:
DAY PRODUCT1 PRODUCT2 PRODUCT3 TOTAL
date1(date) salesnumber(int) salesnumber(int) salesnumber(int) sum(int)
date2(date) salesnumber(int) salesnumber(int) salesnumber(int) sum(int)
... ... ... ... ...
可以追溯到7年。 现在我需要获得过去10天记录中我的3个产品中每个产品的销售平均值,但过去5年(例如平均04/03/2014,04/03/2013,04/03 / 2012,04 / 03 / 2011,04 / 03/2010),所以我可以将它与今年的记录进行比较,以找出变化。是否有捷径可寻?输出将类似于:
DATES AVG(product1) AVG(product2) AVG(product3) AVG(Total)
todaydate avg_last5years avg_last5years avg_last5years avg_last5years
todaydate-1day avg_last5years avg_last5years avg_last5years avg_last5years
todaydate-2day avg_last5years avg_last5years avg_last5years avg_last5years
... ... ... ... ...
答案 0 :(得分:0)
如果我理解您想要的是每个产品在过去五年中在同一天销售的平均值。如果是这样,我认为这可能是你想要的:
select
s.day,
oa.*
from
sales s
outer apply (
select
avg(product1*1.0) p1,
avg(product2*1.0) p2,
avg(product3*1.0) p3,
avg(total*1.0) total
from
sales
where
day(day) = day(s.day)
and month(day) = month(s.day)
and year(day) >= year(s.day) - 5
) oa
where
s.day between dateadd(day, -10, getdate()) and getdate()