Sql server 2008 Sql命令对存储的数据进行排序

Sql server 2008 Sql命令对存储的数据进行排序,sql-server-2008,Sql Server 2008,结果是 select DISTINCT Month, Code from SalaryRecord order by Code ASC 但是我想把Jan和Feb按月份升序排列我假设month列是字符串类型(VARCHAR(n)),所以它是按字符串排序的-在这种情况下,顺序是完全正确的(F在西欧字母表中位于J之前) 您的表中是否也有月份作为数字 如果是这样,您可以按该数值进行订购: Feb Jan Jan 或者您可能有一个日期(或者日期时间,日期时间2列),您可以按以下顺序订购: SELE

结果是

select DISTINCT Month, Code 
from SalaryRecord 
order by Code ASC

但是我想把
Jan
Feb
按月份升序排列

我假设
month
列是字符串类型(
VARCHAR(n)
),所以它是按字符串排序的-在这种情况下,顺序是完全正确的(
F
在西欧字母表中位于
J
之前)

您的表中是否也有月份作为数字

如果是这样,您可以按该数值进行订购:

Feb
Jan
Jan
或者您可能有一个
日期
(或者
日期时间
日期时间2
列),您可以按以下顺序订购:

SELECT DISTINCT 
    Month, Code 
FROM 
    dbo.SalaryRecord 
ORDER BY 
    NumericalMonth, Code ASC
如果你一无所有,你可以很容易地进行分类,那么你需要这个丑陋的大箱子:

SELECT DISTINCT 
    Month, Code 
FROM 
    dbo.SalaryRecord 
ORDER BY 
    MONTH(YourDateColumn), Code ASC
试试这个代码

SELECT DISTINCT 
    Month, Code 
FROM 
    dbo.SalaryRecord 
ORDER BY 
CASE MONTH 
  WHEN 'Jan' THEN 1
  WHEN 'Feb' THEN 2
  WHEN 'Mar' THEN 3
  WHEN 'Apr' THEN 4
  WHEN 'May' THEN 5
  WHEN 'Jun' THEN 6
  WHEN 'Jul' THEN 7
  WHEN 'Aug' THEN 8
  WHEN 'Sep' THEN 9
  WHEN 'Oct' THEN 10
  WHEN 'Nov' THEN 11
  WHEN 'Dec' THEN 12
  ELSE 999
   END

itz为varchar,代码为员工代码;我希望它能按月安排。我没有月作为一个数字,这个月一次又一次地重复,我还有一个主键在这个表中,叫做SalaryCode
select DISTINCT Month, Code
from SalaryRecord
order by DATEPART(mm,CAST([Month]+ ' 1900' AS DATETIME)) asc