【问题标题】:Sorting months in sql在sql中对月份进行排序
【发布时间】:2012-04-06 00:41:00
【问题描述】:

我有这样的查询

SELECT [Year], Month, AVG(salary) AS [salary] FROM table1 
    GROUP BY [Year],[Month]
    ORDER BY Year,Month

但是月份填充为 jan、feb、...等。当我说 order by month 时,我将按字母顺序排列它们。我在想是否有任何范围,比如将 jan 设为 1,将 feb 设为 2 等等,然后按数字排序

【问题讨论】:

  • 您有一张表格,其中月份是文本并获得了投票?
  • 如果您可以访问实际日期格式的日期,请查看datepart()
  • Blam - 这就像存储带有名称的数字:Twohundredtwentyfive 而不是 225
  • 月份包含一月或一月的值是多少?

标签: sql tsql reporting-services


【解决方案1】:

尝试使用以下:

ORDER BY Year, CASE Month WHEN 'Jan' THEN 1 WHEN 'Feb' THEN 2 .... END

剩余月份填写....

【讨论】:

  • 你怎么能说它存储为一月而不是一月。如果他存储为一月,我认为你必须使用 Substring() 来实现。
【解决方案2】:

尝试以下方法:

ORDER BY convert(date, '01 ' + [Month] + ' ' + convert(varchar,[Year]) , 106)

【讨论】:

  • 是的,或者甚至没有日期部分和格式说明符:CAST(Month + ' ' + CAST(Year AS varchar) AS date)
猜你喜欢
  • 2022-01-04
  • 2019-03-09
  • 1970-01-01
  • 2021-06-29
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 2023-04-01
  • 2018-07-03
相关资源
最近更新 更多