2014-01-24 54 views
0
SQL命令對數據進行排序
select DISTINCT Month, Code 
from SalaryRecord 
order by Code ASC 

結果是因爲它是存儲

Feb 
Jan 
Jan 

,但我想JanFeb逐月遞增順序排列

+0

伊茨爲VARCHAR和代碼是員工代碼;我希望它能安排月份。我沒有月份作爲一個數字,月份是一次又一次地重複,我也有我的主鍵在這張表SalaryCode – user3201772

回答

0

我假設Month列是一個字符串類型( VARCHAR(n)),因此它被命令爲一個字符串 - 並且排序非常正確(F在西歐字母中出現在J之前)。

您的表格中是否有月份

如果是這樣,你可以通過數值順序相反:

SELECT DISTINCT 
    Month, Code 
FROM 
    dbo.SalaryRecord 
ORDER BY 
    NumericalMonth, Code ASC 

或者,也許你有一個DATE(或DATETIMEDATETIME2列?),你可以通過命令:

SELECT DISTINCT 
    Month, Code 
FROM 
    dbo.SalaryRecord 
ORDER BY 
    MONTH(YourDateColumn), Code ASC 

如果你什麼都沒有,你可以輕鬆地排序 - 那麼,你將需要這個大丑陋CASE

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 
+0

其不工作 – user3201772

0

試試這個代碼,

select DISTINCT Month, Code 
from SalaryRecord 
order by DATEPART(mm,CAST([Month]+ ' 1900' AS DATETIME)) asc 
相關問題