2012-02-10 3 views
1
года

У меня есть таблица Table1 с колонкой Column1, как это:используя заказ в течение месяца с

Column1

Dec-2010 
Dec-2011 
Feb-2011 
Apr-2011 
Jul-2011 
May-2011 
Aug-2011 
Oct-2011 
Sept-2011 
Jan-2011 
Mar-2011 
Jun-2011 
Nov-2011 
Jan-2012 

Я хочу, чтобы извлечь данные с помощью SELECT, команды следующим образом.

Column1

Dec-2010 
Jan-2011 
Feb-2011 
Mar-2011 
Apr-2011 
May-2011 
Jun-2011 
Jul-2011 
Aug-2011 
Sep-2011 
Oct-2011 
Nov-2011 
Dec-2011 
Jan-2012 

Пожалуйста, помогите мне, предоставляя ВЫБЕРИТЕ запрос для извлечения данных, как показано выше.

ответ

1

Convert Ваша колонка в datetime и порядок.

select Column1 
from YourTable 
order by convert(datetime, left(Column1, 3)+' 01, '+right(Column1, 4), 107) 
+2

Не был бы 'CAST ('01 -» + Column1 AS DATETIME) 'работает так же хорошо? –

+0

@marc_s - Я думаю, это должно работать, но не с входными данными, представленными здесь 'Sept'. Это может быть опечатка, потому что в результате это 'Sep'. –

+0

ах - хороший улов (о 'Sept') - не заметил, что .... –

0

если ваш столбец тип данных является DATE, то просто отдать приказ по имени столбца

SELECT * from TABLE_NAME 
ORDER BY COL1; 

по умолчанию он упорядочивает в порядке возрастания.

2

Вот еще одно решение, которое не связано с отводом с VARCHAR колонки (или я так полагаю), кроме как replace- характер:

SELECT Column1 
FROM Table1 
ORDER BY 
     CONVERT(DATETIME, REPLACE(Column1, '-', ' ')) 
+0

Отлично ... Он отлично работает ... большое спасибо за вашу помощь. –

+0

@VenkateswarluAvula: если этот ответ помог вам решить вашу проблему, пожалуйста, [сделайте ** примите ** это как ответ] (http://meta.stackexchange.com/q/5234/153998) и отметьте его соответствующим образом. –

+0

В соответствии с комментарии по другому ответу, это решение не будет работать, если даты 'Сентября' будут храниться как' Sept' - мы принимаем трехзначный месяц. Кроме того, да, пожалуйста ** примите ** ответ, если вы его использовали. – LiquidPony

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