У меня есть таблица в SQL Server, содержащая серию недель к началу недели:
id weekBeginning
1 2011-08-07 00:00:00
2 2011-08-14 00:00:00
3 2011-08-21 00:00:00
4 2011-08-28 00:00:00
Я хотел бы сохранить процесс, который при вводе даты @dt
выводит идентификаторнедели, содержащей эту дату, создавая строку для этой недели, если она не существует.Между началом недели не будет совпадений.)
Я попробовал следующее в SQL Server, но в нем говорится, что у меня неверный синтаксис.Как правильно сделать это?
declare @weekid int
declare @weekBeginning datetime
while not exists(select @weekid = id from WeekTable where @dt between weekBeginning and date_add(weekBeginning, interval 7 day))
begin
set @weekBeginning = (select max(weekBeginning)) from WeekTable
insert WeekTable(weekBeginning) output inserted.id into @weekid values date_add(@weekBeginning, interval 7 day)
end