gpt4 book ai didi

sql - 在 SQL 查询中对月份名称进行排序

转载 作者:行者123 更新时间:2023-12-04 22:04:35 25 4
gpt4 key购买 nike

我当前的查询是:

SELECT FORMAT(Date, 'MMM') as 'Date', FORMAT(Date, 'yyy') as 'Year' 
,COUNT(*)
as 'Tickets Generated'
FROM [SambaData2].[dbo].[Tickets]
GROUP BY FORMAT(Date, 'MMM'), FORMAT(Date, 'yyy')
ORDER BY Date

它返回值:

enter image description here

我希望相同的查询返回带年份的排序月份名称!

最佳答案

为了提高查询效率,我会避免使用 format() 方法。

select
left(datename(month,[Date]),3) [Month]
, year([Date]) [Year]
, [Tickets Generated]
from (
SELECT
dateadd(month,datediff(month,0,t.[Date]),0) as [Date]
, COUNT(*) as [Tickets Generated]
FROM [SambaData2].[dbo].[Tickets] AS t
GROUP BY dateadd(month,datediff(month,0,t.[Date]),0)
) as d
ORDER BY [Date]

此方法的核心如下:

dateadd(month,datediff(month,0,t.[Date]),0)

这具有定位相关年份和月份的第一天的效果,从而为 order by 子句留下一个完整的日期,但仍然分组到所需的级别。运行 foillowing 可能有助于解释

select 
datediff(month,0,getdate()) a
, dateadd(month,datediff(month,0,getdate()),0) b
, left(datename(month,getdate()),3) c
, getdate() d


a b c d
------- ------------ ----- ---------------------
1425 2018-10-01 Oct 2018-10-04 08:08:19

关于sql - 在 SQL 查询中对月份名称进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52639680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com