Sql server SQL Server查询:月份排序
我正试着对这个月进行分类,但这是结果 查询:Sql server SQL Server查询:月份排序,sql-server,Sql Server,我正试着对这个月进行分类,但这是结果 查询: SELECT DISTINCT Month FROM ClientsDataAging ORDER BY Month ASC 结果 似乎是按字母顺序排列的 我想要每月排序的结果,如1月、2月、3月等 我找到了这个答案: 但这似乎与我的情况不同,因此,任何帮助都将不胜感激。蒂亚 需要按顺序将名称转换为月号。 比如: SELECT DISTINCT Month FROM ClientsDataAging ORDER BY DATEPART(MM,M
SELECT DISTINCT Month FROM ClientsDataAging ORDER BY Month ASC
结果
似乎是按字母顺序排列的
我想要每月排序的结果,如1月、2月、3月等
我找到了这个答案:
但这似乎与我的情况不同,因此,任何帮助都将不胜感激。蒂亚 需要按顺序将名称转换为月号。 比如:
SELECT DISTINCT Month FROM ClientsDataAging ORDER BY
DATEPART(MM,Month + ' 01 2018') ASC
(…我没有测试它,因为我从手机上发布了这个)
按项目排序的编辑必须出现在..中:
…如果您不需要像接受答案中那样删除
DISTINCT
。鉴于您将月份存储为字符串数据,您当前看到的输出是正确的,因为这些日期是按文本排序的,而不是按日期排序的。一个选项是将转换与格式掩码107一起使用:
SELECT Month
FROM ClientsDataAging
ORDER BY CONVERT(datetime, SUBSTRING(Month, 1, 3) + ' 01 18');
这里的技巧是,例如,对于“一月”,我们构建字符串'jan0118'
。这是'Mon dd,yy'
的格式,CONVERT
需要掩码107。因此,我们将您的文本月转换为该月第一日的真实日期。我任意使用2018
作为年份,但这不重要,因为您从未提及任何年份数据
下面是一个演示,演示如何正确转换所有文本月份
试试上面的脚本。uhggg我的直觉是正确的,我已经看到了一些类似将字符串转换为月数等的东西,拍摄我最好试试看,如果指定了select DISTINCT,则按项目排序必须出现在选择列表中。@Cremlic,如果你不需要像Tim Biegeleisen的公认答案那样进行DISTINCT,你应该在原帖中提到。使用和不使用DISTINCT有很大的区别。感谢您的回复,但它说从字符串转换日期和/或时间时转换失败。为什么?我不知道。我的代码正在演示中运行,我想它也可以在SSM上运行。你一定是在用你的数据做一些我看不到的事情。@Cremlic如果你有其他问题,请发表评论,否则如果你有其他大的要求,可能会提出一个新问题。非常感谢!伙计
SELECT Month
FROM ClientsDataAging
ORDER BY CONVERT(datetime, SUBSTRING(Month, 1, 3) + ' 01 18');
SELECT DISTINCT Month FROM ClientsDataAging ORDER BY MONTH('01-' + [Month] + '-2018') ASC