Как сбросить столбец идентификатора таблицы при достижении порогового значения?
Я оставляю большую часть своего sql, чтобы консолидировать свой вопрос. У меня есть временная таблица, объявленная следующим образом:
if OBJECT_ID('Tempdb..#RankCalendar','U') is not null drop table #RankCalendar CREATE TABLE #RankCalendar (ID INT identity(0,1) ,CalendarDate DATE ) INSERT INTO #RankCalendar SELECT cal.CalendarDate FROM tblCalendar cal
Это, по сути, вставляет значение даты (01/01/2002) в таблицу с начальным идентификатором 0. Однако мне нужно, чтобы ранг сбрасывался после каждого месяца. Так что, если предположить, что январь-мой первый месяц, то у меня будет:
| ID / CalendarDate |
| 0 | 01/01/2002 |
| 1 | 01/02/2002 |
| 2 | 01/03/2002 |
Это отлично подходит для января, но когда вводится 1 февраля, идентификатор равен 32, а не 0.
Есть какие-нибудь идеи или еще лучше решения о том, как с этим справиться?
Что я уже пробовал:
Я пробовал применять функции Dense_Rank и Lead безрезультатно. Я также попытался использовать подход sum over (), указанный в msdn.
Richard Deeming
Столбец идентичности-это неправильный подход. Он не предназначен для сброса ни для чего, кроме ручного обслуживания.
Какие проблемы у вас были с использованием DENSE_RANK
?