2013-03-08 2 views
0

У меня есть таблица с полем даты и конвертация в месяцы и годы (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 

здесь группы по месяцам, я не хочу, чтобы отобразить поле даты

Пожалуйста, помогите

ответ

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

Смежные вопросы