Автоматически генерировать дату для вставки - PullRequest
0 голосов
/ 08 октября 2019

У меня есть группа операторов вставки ниже. Единственная разница между ними - Thru_DT. Первая вставка для 6/30/2019 даты. Второй - за 15 дней до этой даты, а третий - за 15 дней до даты второй вставки. Как мне автоматически сгенерировать эти даты без необходимости их жесткого кодирования?

INSERT INTO table1 (a, b, c)
SELECT t2.a1, Max(t2.b1) Provider, t2.c1
From table2 t2
LEFT JOIN tb t1 On t2.a = t1.a1
WHERE t1.b Is Null And t2.Thru_DT >= '6/30/2019' 
    And t2.c In (Select CCN From table3)

INSERT INTO table1 (a, b, c)
SELECT t2.a1, Max(t2.b1) Provider, t2.c1
From table2 t2
LEFT JOIN tb t1 On t2.a = t1.a1
WHERE t1.b Is Null And t2.Thru_DT >= '6/15/2019' 
    And t2.c In (Select CCN From table3)

INSERT INTO table1 (a, b, c)
SELECT t2.a1, Max(t2.b1) Provider, t2.c1
From table2 t2
LEFT JOIN tb t1 On t2.a = t1.a1
WHERE t1.b Is Null And t2.Thru_DT >= '6/1/2019' 
    And t2.c In (Select CCN From table3)

Ответы [ 2 ]

0 голосов
/ 08 октября 2019

Используйте конструктор таблицы:

INSERT INTO table1 (a, b, c)
    SELECT t2.a1, Max(t2.b1) Provider, t2.c1
    FROM table2 t2 LEFT JOIN
         tb t1 
         ON t2.a = t1.a1 CROSS JOIN
         (VALUES ('2019-06-30'), ('2019-06-15'), ('2019-06-01')
         ) v(Thru_DT)
     WHERE t1.b Is Null AND
           t2.Thru_DT >= v.Thru_DT AND
           t2.c IN (SELECT CCN FROM table3);
0 голосов
/ 08 октября 2019

Вы можете построить даты в CTE:

;WITH cte_date(thru_DT)
AS
(
  SELECT @GivenDate 
  UNION ALL SELECT DATEADD(DAY,-15,@GivenDate)
  UNION ALL SELECT DATEADD(DAY,-30,@GivenDate)
)
INSERT INTO table1 (a, b, c)
SELECT t2.a1, Max(t2.b1) Provider, t2.c1
From table2 t2
INNER JOIN table3 t3
ON t2.c=t3.CCN
INNER JOIN cte_date d
ON t2.Thru_DT >= d.Thru_DT 
LEFT JOIN tb t1 On t2.a = t1.a1
WHERE t1.b Is Null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...