У меня есть запрос, который выводит следующее:
RegDate Month countrycode affiliate sk_skin AC GameWin 1/1/2011 1/1/2011 DE 0 a 274 32458.2558 1/1/2011 1/1/2011 UK 0 b 4 386.6925 1/1/2011 1/1/2011 FI 1 a 320 12875.0189 1/1/2011 1/1/2011 SK 1 b 85 5752.8503 1/1/2011 1/1/2011 FI 0 a 520 65339.3142 1/1/2011 1/1/2011 FI 1 a 295 29163.1045 1/1/2011 2/1/2011 DE 0 a 79 16028.3849 1/1/2011 3/1/2011 DE 0 b 4 525.252 1/1/2011 3/1/2011 DE 1 a 36 7718.6327 1/1/2011 3/1/2011 DE 1 b 24 5715.1279 1/1/2011 4/1/2011 FI 0 a 196 27357.4072 1/1/2011 4/1/2011 FI 1 a 146 20178.9315
Я хотел бы иметь номер строки месяца, в этом случае 01.01.2011 будет 1, 01.02.2011 будет 2, 01.03.2011 будет 3, 01.04.2011 будет 4.
Этот запрос будет выполняться в цикле, поэтому месяц может начинаться в разные моменты,
Я хотел бы получить следующий результат;
RegDate Month countrycode affiliate sk_skin AC GameWin Month 1/1/2011 1/1/2011 DE 0 a 274 32458.2558 1 1/1/2011 1/1/2011 UK 0 b 4 386.6925 1 1/1/2011 1/1/2011 FI 1 a 320 12875.0189 1 1/1/2011 1/1/2011 SK 1 b 85 5752.8503 1 1/1/2011 1/1/2011 FI 0 a 520 65339.3142 1 1/1/2011 1/1/2011 FI 1 a 295 29163.1045 1 1/1/2011 2/1/2011 DE 0 a 79 16028.3849 2 1/1/2011 3/1/2011 DE 0 b 4 525.252 3 1/1/2011 3/1/2011 DE 1 a 36 7718.6327 3 1/1/2011 3/1/2011 DE 1 b 24 5715.1279 3 1/1/2011 4/1/2011 FI 0 a 196 27357.4072 4 1/1/2011 4/1/2011 FI 1 a 146 20178.9315 4
Я попытался использовать следующее,
(RANK() OVER (ORDER BY DATEADD(m,DATEDIFF(m,0,date),0))-1) as rank
Формат даты - дата (без времени) с использованием
DATEADD(m,DATEDIFF(m,0,datetime),0)
Этот ранг дает мне случайный номер ранга (с своего рода шаблоном), однако, поскольку этот запрос будет добавлен в цикл и повторяться по сгенерированному числу, которое должно быть: 1 для самого низкого месяца, 2 для второго самого низкого т. д.
Надеюсь, я объяснил себя правильно.