Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Процедура создания таблицы  [new]
SiмbаTLM
Member

Откуда:
Сообщений: 7
Добрый день,
Прошу помощи, туплю в написании процедуры на создание таблицы.
Суть в том, чтобы получить текущую дату и даты, которые были неделю назад, две недели назад, три недели назад.

CREATE PROCEDURE dbo.Test
AS
   CREATE TABLE #t(Date_ DATETIME);
   INSERT INTO #t VALUES
('01-01-2018'),
(DATEADD(DAY, -7, '01-01-2018')),
(DATEADD(DAY, -14, '01-01-2018')),
(DATEADD(DAY, -21, '01-01-2018'));
   SELECT Test2Col = Date_ FROM #t;
GO
 
EXEC Test


То есть вызов процедуры Test (06032013) должен создавать таблицу:

06.03.2013
27.02.2013
20.02.2013
13.02.2013

Заранее спасибо за помощь)
18 авг 18, 23:03    [21646957]     Ответить | Цитировать Сообщить модератору
 Re: Процедура создания таблицы  [new]
Владимир Затуливетер
Member

Откуда:
Сообщений: 427
create or alter proc dbo.Test 
    @Date date
  , @WeekCount int
as
	with cteData ( WeekNum )
	as (
		select 0
		
		union all
		
		select WeekNum + 1
		from cteData
		where WeekNum < @WeekCount - 1
	)
	select dateadd(day, WeekNum * 7, @Date) as Date
	from cteData
	order by WeekNum
	option (maxrecursion 10000) -- 10000 - это максимальное число строк которое может вернуть процедура, замените если надо.
go

exec dbo.Test
    @Date = '2013-03-06'
  , @WeekCount = 4
19 авг 18, 11:16    [21647069]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить