У меня есть список дат в формате YYYYMM и я пытаюсь ранжировать их в год по формату года, который будет выглядеть следующим образом:SQL Ранжирование Даты получить за год Орден
MonthDisplay YearMonth Rank MonthNumber YearNumber
Aug-2013 201308 1 8 2013
Aug-2012 201208 2 8 2012
Jul-2013 201307 3 7 2013
Jul-2012 201207 4 7 2012
I удалось получить его закрыть, используя следующий ранг и получить результаты ниже:
RANK() OVER(PARTITION BY 1 ORDER BY MonthNumber DESC, YearNumber DESC)
Month YearMonth Rank
Dec-2012 201212 1
Dec-2011 201112 2
Nov-2012 201211 114
Nov-2011 201111 115
Oct-2012 201210 227
Oct-2011 201110 228
Однако, это начинается с Dec-2012 вместо Aug-2013 (текущий месяц). Я не могу понять, как его начать с текущего месяца. Я уверен, что это нечто очень простое, и я просто пропустил его. Благодаря!
'RANK() OVER (PARTITION BY 1 ORDER BY DESC YearNumber, MonthNumber DESC)' –
Это не соответствует последовательности, указанной в первом примере. Это Звания Aug-2013 как 1 и Aug-2012, как 13. – buzzzzjay