Извините, что задаю этот вопрос, но я новичок в SQL, мой коллега по работе создает представление, которое мне нужно в качестве источника данных для отчета, однако, поскольку это представление основано на нескольких других представлениях, оно занимает около 45 минут.выполнить запрос.Это способ долго.Поэтому я создал таблицу из этого представления, начальное время выполнения остается тем же, но когда оно выполняется на месте, оно выполняется за считанные секунды.
В Microsoft SQL Server 2014 я использовал следующий запрос:
select *
into [dbo].[MAT_v_demnew_daily_am_all_data]
from [dbo].[v_demnew_daily_am]
Это прекрасно работает, но так как представление обновляется ежедневно, мне также нужно обновлять таблицу каждый день.Когда я сейчас выполняю вышеупомянутый запрос, я получаю сообщение, что таблица уже существует.
Вот почему я попытался использовать 'insert' в этом случае:
insert into [dbo].[MAT_v_demnew_daily_am_all_data]
select *
from [dbo].[v_demnew_daily_am]
Здесь у меня проблема в том, что он вставляет не только дополнительные данные, но и уже существующие данные, поэтому вконец у меня есть дубликаты.
В качестве обходного пути я теперь вручную удаляю таблицу [dbo].MAT_v_demnew_daily_am_all_data]
и затем выполняю запрос select * into
.
Теперь я ищу более простое решение: возможно ли удаление таблицы по запросу и в том же запросе создать новую с помощью select * into
или можно только вставить новые данные из представленияк столу, чтобы я не получил дубликаты.
Кроме того, возможно ли, чтобы такой оператор SQL выполнялся автоматически ежедневно, возможно, с помощью планировщика файлов .bat и windows?
Я знаю, что источником всех проблем является View и что мы должны его улучшить, но сначала ищем краткосрочное решение.
Большое спасибо.
Матиас