我在表中有一些订单,2011年的最后订单日期是12月20日.
SELECT CONVERT(VARCHAR(3),DATENAME(week,convert(datetime,order_date,103))) AS week,COUNT(1) as orders FROM order_table where DATENAME(YEAR,103)) = '2011' GROUP BY CONVERT(VARCHAR(3),103))) order by week asc
它返回了以下一些结果:
Week | Orders 41 | 42 42 | 110 43 | 115 ... ... 51 | 155 52 | 15
这样做的问题在于,我提到的2011年最后一个订单日期是2011年12月20日,不能是52周,所以必须是第51周.
我有一些其他的统计数据(关闭另一个系统,而不是sql服务器),它给了我一些其他的数据,上一周是51,我毫无疑问是正确的.如果人们都在寻找两者,那么将会有一个问题!
任何人都有任何想法或知道如何排序这个?
谢谢,
解决方法
2011年12月20日的iso_week是51.所以也许这就是你所需要的.
SELECT datepart(iso_week,'2011-12-20')