Tsql 按周降序,基于当前周

Tsql 按周降序,基于当前周,tsql,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(m

是否有办法按周对查询进行排序,但从当前周开始,然后按降序排序?因此,如果当前周为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)
谢谢!
在您的示例中,第2周和第1周是否与第52周不同?然后可以按YEAROrderDate DESC、DATEPARTweek、OrderDate DESC进行订购
但您必须将YEAROrderDate添加到GROUP BY子句中。

只需先按当前周排序,然后按降序按其他周排序,您可以尝试以下顺序逻辑。您可以在上面添加SELECT和其他逻辑

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

注意不同年份的周数相同


无论如何:因为您是按周分组的,所以您可以简单地按MinorDate DESC排序。

此查询甚至不会运行。你到底想达到什么目的?提供示例数据和预期输出。