2013-03-08 64 views
0

我有帶日期字段的表格並將其轉換爲Months和Years(2個獨立的列)。我無法排序如何在SQL Server中排序幾個月和幾年

Month Year 
12  2011 
11  2011 
2   2012 
1   2012 

如果我編寫查詢。它給人的

Month  Year 
    1   2012 
    2   2012 
    11   2011 
    12   2011 

但是我需要一個像下面

Month   Year 
    11   2011 
    12   2011 
    1   2012 
    2   2012 

這裏GROUP BY月,我不想顯示日期字段

請幫

回答

1

這是你可以做什麼:

;WITH CTE 
AS 
(
    SELECT *, 
    ROW_NUMBER() OVER (PARTITION BY YEAR ORDER BY MONTH) RN 
FROM YourTable 
) 

SELECT * FROM CTE 
ORDER BY YEAR, RN 

SQL FIDDLE DEMO

其實更多的是一種明星前鋒的方式,

SELECT * FROM YourTable 
ORDER BY YEAR, MONTH 
2
select datepart(month, DateCol) as [Month], 
     datepart(year, DateCol) as [Year] 
from YourTable 
order by [Year], [Month] 

SQL Fiddle

如果你想按每月

select datepart(month, DateCol) as [Month], 
     datepart(year, DateCol) as [Year] 
from YourTable 
group by datepart(month, DateCol), 
     datepart(year, DateCol) 
order by [Year], [Month] 

SQL Fiddle

相關問題