Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server查询:月份排序_Sql Server - Fatal编程技术网

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