TSQL два курсора для сравнения строк

#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. Вы хотите сохранить что-нибудь еще, кроме сравнения (например, значение ключа)?