powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / DateADD и LAG
4 сообщений из 4, страница 1 из 1
DateADD и LAG
    #39632505
Азмузи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как мне использовать функции LAG и DateADD?
Есть две таблицы

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
create table #test (

  id         int identity,

  date datetimeoffset(7)

insert into #test (date) select getdate()

select * from #test




Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create table #test2 (

  id         int identity,

  deadline int

insert #test2 (deadline) values(15)
insert #test2 (deadline) values(12)
insert #test2 (deadline) values(8)
insert #test2 (deadline) values(30)

select * from #test2




Нужно новую таблицу заполнить след.образом:
первая строка -
date from #test + deadline from #test2 where id = 1
вторая строка -
(первая строка + deadline from #test2 where id = 2)
третья строка -
(вторая строка + deadline from #test2 where id = 3)
четвертая строка -
(третья строка + deadline from #test2 where id = 4)
...
Рейтинг: 0 / 0
DateADD и LAG
    #39632519
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Азмузи,

Наличие LAG - принципиально ?
А то с рекурсией всё "просто и крассиво" ...

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
;with cte as (
	select dateadd(day,t2.deadline,t.date) as date, t2.id 
	from #test t cross join #test2 t2 
	where t2.id=1

	union all

	select dateadd(day,t2.deadline,c.date) as date, t2.id 
	from cte c inner join #test2 t2 on t2.id=c.id+1)

select * from cte order by id  	


dateid2018-05-03 14:15:40.4800000 +00:0012018-05-15 14:15:40.4800000 +00:0022018-05-23 14:15:40.4800000 +00:0032018-06-22 14:15:40.4800000 +00:004
...
Рейтинг: 0 / 0
DateADD и LAG
    #39632919
Азмузи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
court,
не принципиально) спасибо большое!
...
Рейтинг: 0 / 0
DateADD и LAG
    #39632927
Guf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
court,
Зачем рекурсия?
или:
Код: sql
1.
2.
3.
4.
5.
SELECT  [t2].[id], DATEADD(DD, [total].[dedline], [t1].[date])
    FROM #test2 [t2]
         CROSS APPLY (SELECT SUM([t22].[deadline]) AS [dedline] FROM #test2 [t22] WHERE [t22].[id] <= [t2].[id]) [total]
         CROSS JOIN #test [t1]
;

или:
Код: sql
1.
2.
3.
4.
5.
6.
SELECT  [t2].[id], DATEADD(DD, SUM([t22].[deadline]), [t1].[date])
    FROM #test2 [t2]
         INNER JOIN #test2 [t22] ON [t22].[id] <= [t2].[id]
         CROSS JOIN #test [t1]
    GROUP BY [t2].[id], [t1].[date]
;
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / DateADD и LAG
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]