#sql-server #tsql #view #insert #cursor
#sql-сервер #tsql #Вид #вставить #курсор
Вопрос:
У меня есть два представления с данными. Я сравниваю строку из столбца в первом представлении с каждой строкой в столбце в другом представлении / таблице. Мне нужно вставить результат этого сравнения в другую таблицу.
На данный момент я использую два курсора только с пересылкой, просматривая строку за строкой через оба представления / таблицы и вставляя результат. Для меня это так медленно. Есть ли какая-либо другая возможность выполнить этот двойной цикл (у меня даже нет индекса во втором представлении), кроме двух курсоров?
Комментарии:
1. Представления не содержат данных — представления — это просто сохраненные операторы T-SQL, которые оцениваются при выборе из представления
2. это правда. я неправильно истолковал это
Ответ №1:
Я думаю, вы можете использовать перекрестное соединение
INSERT INTO ResultTable
Select a.Column1 - b.Column2 AS Comparison
FROM Table1 AS A
CROSS JOIN Table2 AS B;
Курсоры работают очень медленно
Комментарии:
1. Проблема в том, что один из них — таблица, второй — представление. Возможно ли будет использовать перекрестное соединение здесь?
2. View — это просто виртуальная таблица.
3. есть ли возможность добавить предложение where для вставки этих данных, только если это сравнение будет, например,>0?
4. @JanWalczak, да, вы можете добавить предложение where. Вы хотите сохранить что-нибудь еще, кроме сравнения (например, значение ключа)?