Запуск данных за 1 год на сервере SQL - PullRequest
1 голос
/ 19 апреля 2020

У меня есть процедура, в которой у меня есть данные о вызовах за каждый день. Из этой процедуры я написал другую процедуру для вставки и обновления в таблицу назначения.

У нас есть работа, которая выполняется каждый день. Но теперь мне нужно запустить данные за прошлый 1 год (каждый день).

Ниже приведены мои параметры в процедуре обновления вставки - если мне нужно получить данные для 18-го, мои значения параметров будут такими, как показано ниже

,@StartDate datetime = '2020-04-18'
,@EndDate datetime = '2020-04-19'
,@SkillLevel varchar(10)='Total'
,@Region varchar(20) = 'US'

Если мне нужно получить данные для 17-го числа, мои значения параметров будут такими, как показано ниже

,@StartDate datetime = '2020-04-17'
,@EndDate datetime = '2020-04-18'
,@SkillLevel varchar(10)='Total'
,@Region varchar(20) = 'US'

Подобно этому, чтобы получить данные за последний 1 год, мне нужно запустить код в течение 365 дней, что требует огромных усилий

Может кто-нибудь подсказать, как индивидуально проходить даты на 1 год с некоторыми l oop.

1 Ответ

0 голосов
/ 19 апреля 2020

Попробуйте это:

DECLARE @DataSource TABLE
(
    [StartDate] DATE
);

DECLARE @BegDate DATE
       ,@EndDate DATE;

SELECT @BegDate = '2020-01-01'
      ,@EndDate = '2020-12-31';

DECLARE @EndNumber BIGINT;

SELECT @EndNumber = DATEDIFF(DAY, @BegDate, @EndDate);

INSERT INTO @DataSource ([StartDate])
SELECT TOP (@EndNumber) DATEADD(DAY, ROW_NUMBER() OVER(ORDER BY T1.[number])-1, @BegDate)
FROM master..spt_values T1 
CROSS JOIN master..spt_values T2;

WHILE EXISTS(SELECT 1 FROM @DataSource)
BEGIN;

    SELECT TOP 1 @BegDate = [StartDate]
                ,@EndDate = DATEADD(DAY, 1, [StartDate])
    FROM @DataSource; 

    --

    EXEC [stored_precedure]  @StartDate = @BegDate
                            ,@EndDate = @EndDate
                            ,@SkillLevel ='Total'
                            ,@Region = 'ES'


    --

    DELETE FROM @DataSource
    WHERE [StartDate] = @BegDate;

END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...