按周顺序降序基于当前周

时间:2018-07-12 17:18:56

标签: tsql

是否可以按星期#排序此查询,但从当前星期开始,然后按降序排序?因此,如果当前星期#是2,它将按2,1,52,51的顺序排序

SELECT 
    SalesPerson
  , CAST(SUM(hours) AS DECIMAL(18 , 2))
  , DATEPART(wk , DATEADD(wk , DATEDIFF(wk , 0 , OrderDate) , 0)) AS Wk#
    FROM Orders
    WHERE OrderDate >= DATEADD(month , -12 , GETDATE())
    GROUP BY DATEADD(wk , DATEDIFF(wk , 0 , OrderDate) , 0)

谢谢! E

3 个答案:

答案 0 :(得分:1)

在您的示例中,第2周和第1周的年份与52周不同吗?然后,您可以按YEAR(OrderDate)DESC,DATEPART(week,OrderDate)DESC进行ORDER 但是您必须将YEAR(OrderDate)添加到GROUP BY子句中。

答案 1 :(得分:0)

只需先按当前星期排序,然后再按降序排序其他星期,则可以尝试使用以下排序逻辑。您可以在其顶部添加SELECT和其他逻辑。

ORDER BY 
CASE WHEN 
DATEPART(week,OrderDate)  - DATEPART(WEEK, GETDATE()) = 0 THEN 100 ELSE 
DATEPART(week,OrderDate) 
END DESC

答案 2 :(得分:0)

请注意来自不同年份的相同数字的周...

无论如何:由于您按周分组,因此您可以简单地ORDER BY MIN(OrderDate) DESC