按日期名称排序

问题描述 投票:0回答:1

我有这个代码,可以根据一周的日期名称成功显示订单数量。但是,我想显示相应排序的日期名称。 我有下面的代码:

SELECT 
    DATENAME(dw, orderDate) AS day_of_week, 
    COUNT(orderID) AS total_orders
FROM 
    Orders
GROUP BY 
    DATENAME(dw, orderDate)

这是输出:但我想要按星期一、星期二、星期三......等排序的天数(名称)。

enter image description here

有什么想法吗?预先感谢您。

sql sql-server
1个回答
1
投票

我认为您正在寻找带有 DATEPART

 参数的 
WEEKDAY
,例如

with cte as (
  select DateOfTest
  from (
    values
    ('19 Oct 2024'),
    ('18 Oct 2024'),
    ('17 Oct 2024'),
    ('16 Oct 2024'),
    ('15 Oct 2024'),
    ('14 Oct 2024'),
    ('13 Oct 2024')
  ) x (DateOfTest)
)
select *, datename(weekday, DateOfTest)
from cte
order by datepart(weekday, DateOfTest);

退货:

测试日期
2024 年 10 月 13 日 周日
2024 年 10 月 14 日 星期一
2024 年 10 月 15 日 星期二
2024 年 10 月 16 日 周三
2024 年 10 月 17 日 星期四
2024 年 10 月 18 日 周五
2024 年 10 月 19 日 星期六

DBFiddle

© www.soinside.com 2019 - 2024. All rights reserved.