我有一个包含三个参数的存储过程: 参数1 - 有200个数据 参数2 - 有6个数据 参数3 - 150数据
我想将结果的所有可能组合转储到表中。有什么想法吗? 我想做类似以下的事情 对于每个参数1 对于每个参数2 对于每个参数3
答案 0 :(得分:2)
假设参数是表值参数,而“数据”则表示行 - 要获得所有可能的组合,您使用交叉连接,就像使用常规表一样:
-- 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