Для каждого цикла в хранимой процедуре - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть хранимая процедура с тремя параметрами: Параметр 1 - имеет 200 данных Параметр 2 - имеет 6 данных Параметр 3 - 150 данных

Я хочу сбросить все возможные комбинации результата в таблицу. Есть идеи, пожалуйста? Я хочу сделать что-то вроде следующего Для каждого параметра 1 Для каждого параметра 2 Для каждого параметра 3

1 Ответ

0 голосов
/ 30 апреля 2018

Предполагая, что параметры являются табличными параметрами, а под "данными" вы подразумеваете строки - для получения всех возможных комбинаций вы используете перекрестное соединение, как и в обычных таблицах:

-- It's better practice to specify the columns but I don't know what your columns are...
SELECT * 
FROM @TVP1
CROSS JOIN @TVP2
CROSS JOIN @TVP3

Перекрестное соединение вернет каждую возможную комбинацию между строками обеих таблиц - вот еще один пример, который поможет вам визуализировать это:

DECLARE @T as table
(
    Col int
);

INSERT INTO @T (Col) VALUES (0), (1);


SELECT  t1.Col As C1, 
        t2.Col As C2,
        t3.Col As C3
FROM @T t1
CROSS JOIN @T t2
CROSS JOIN @T t3
ORDER BY C1, C2, C3


C1  C2  C3
0   0   0
0   0   1
0   1   0
0   1   1
1   0   0
1   0   1
1   1   0
1   1   1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...