用sql 统计 每一周的 数据
select
DATEPART(yy,a.create_dt) AS '年', datepart(week,dateadd(day,-1,a.create_dt)) as 周,sum(fee_fact_all) AS '销售金额'
from tbOrder AS a INNER JOIN dbo.tbOrderDetail AS b ON a.id=b.order_id
WHERE b.product_id ='12212'
AND project_id='4' AND a.create_dt<>''
group by DATEPART(yy,a.create_dt),datepart(week,dateadd(day,-1,a.create_dt))
ORDER BY 1,2 asc
datepart(week,dateadd(day,-1,a.create_dt)) as 周
我减去1 的意思是 datepart 默认每周的周日 是第一天,我减去一 是不是周一是第一天?(第一个问题)
第二个问题:
为什么统计出来的数据
年 周 金额
2012 1 100
2012 2 200
........
......
2012 21 400
2012 53 500
今天是本年的第21 周, 53 是年末 为什么 会有53周? 谢谢各位!
------解决方案--------------------你减去一天没啥用啊,比如说select DATEPART(W,'2011-12-31'),恰好等于7
你减去一天,还是有六天在53周里面
------解决方案--------------------為什麼要減1,按的你寫法2012-01-01,豈不是第53周內的。。。
------解决方案--------------------周一为第一天是设置是 set datefirst 1
------解决方案--------------------52周以后的日期 在当前年内,SQL SERVER 默认为第53周