Вставить> 1 строки данных из таблицы в другую таблицу TempTable - PullRequest
0 голосов
/ 07 ноября 2019

Поскольку результат возвращает более 1 строки, он не может INSERT INTO таблицу @TEMP_ROW. Я хочу, чтобы все строки были вставлены в таблицу @TEMP_ROW. Могу ли я использовать цикл while? Если да, то как? Или любой другой метод?

DECLARE @TEMP_ROW TABLE
                  (
                        RSEQ INT IDENTITY(1,1),
                        ROWNO INT
                  )

INSERT INTO @TEMP_ROW (ROWNO) 
VALUES ((SELECT RowNo 
         FROM R2 
         WHERE R2.ReqID = 802 
           AND R2.RowNo IN (SELECT DISTINCT RowNo 
                            FROM R1 
                            WHERE ReqID = 802 
                              AND ((Fac IN ('ABC', 'ABCD') 
                                   AND NOM IN ('', '00', '0')) 
                               OR (Fac ='AAA'))
                              AND ROWLED = 'L')) 

Ошибка:

Подзапрос SQL Server возвратил более 1 значения. Это недопустимо, если подзапрос следует =,! =, <, <=,>,> =

1 Ответ

3 голосов
/ 07 ноября 2019

Попробуйте insert из select синтаксиса.

INSERT INTO @TEMP_ROW 
            (rowno) 
SELECT rowno 
FROM   r2 
WHERE  r2.reqid = 802 
       AND r2.rowno IN (SELECT DISTINCT rowno 
                        FROM   r1 
                        WHERE  reqid = 802 
                               AND ( ( fac IN ( 'ABC', 'ABCD' ) 
                                       AND nom IN ( '', '00', '0' ) ) 
                                      OR ( fac = 'AAA' ) ) 
                               AND rowled = 'L') 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...