у меня есть стол
----------
User
----------
userID(pk)
startdate // update : i am not using this field.
enddate
Мне нужно сравнить end_dates между строками, сравнивая, больше ли это 3 дня, и посчитать идентификатор пользователя.
я делаю что-то похожее на это
WHILE @@FETCH_STATUS = 0
BEGIN
select @lastrowID = max(rowid) from @User
if (@userid = (select userId from @User where rowid = @lastRowID))
begin
update @User set NextEndDate= @endDate where rowid = @lastRowID and userid = @userid
end
else
begin
insert @UserTable (userid, EndDate,NextEndDate) values (@userid, @endDate,@NextEndDate)
end
END
Моя идея состоит в том, чтобы обойти таблицу и создать следующую дату, а затем найти сравнение, используя datediff. Я застрял с первой частью создания следующей даты и считаю, что вторая часть сравнения будет легкой. я застрял между ними.
Мой вопрос в том, правильно ли я поступаю, это становится довольно сложно.
я запутался, чтобы получить результат через SQL-запрос или использовать C # в коде, использующем Linq или что-то подобное.
Обновление :
извините, если мне неясно объяснить мой сценарий: я пытаюсь найти счетчик, ни разу клиент не посещал.
например:
ID пользователя: 1 посещали ежедневно или один раз в месяц. поэтому мне нужно получить количество (частоту посещения пользователя). поэтому, если дата посещения пользователя была
userid enddate
1 1/1/2010
1 1/2/2010 count 1
1 1/10/2010 count 2 difference is more than 3 days
1 1/13/2010 count 2 ( because diff is less than 3 days)
вот как я должен считать, вот почему я пытался использовать курсор, что было слишком сложно для меня решить. Я ценю ваше руководство.