sql-server - 对于存储过程中的每个循环
问题描述
我有一个带有三个参数的存储过程: 参数 1 - 有 200 个数据 参数 2 - 有 6 个数据 参数 3 - 150 个数据
我想将结果的所有可能组合转储到表中。请问有什么想法吗?我想做类似以下的事情 对于每个参数 1 对于每个参数 2 对于每个参数 3
解决方案
假设参数是表值参数,并且“数据”是指行 - 要获得所有可能的组合,您可以使用交叉连接,就像使用常规表一样:
-- 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
推荐阅读
- azure-data-factory - 创作和部署
- c# - 如何将 PresentationFramework 加载到我的 xUnit 测试中?
- java - 休眠:我不想使用延迟加载或急切加载获取关联字段
- sql - 在sql server中插入时将一行拆分为两行
- java - Vaadin 8:更改描述的背景颜色(工具提示)
- events - 在事件驱动的系统上保留已发布的事件是否至关重要?
- reactjs - 如何设置nextjs路由器查询参数
- angular - 使用管道或其他方式角度美化数据
- angular - 什么是“Angular 根文件夹”
- json - Spring RestTemplate 无法处理英镑符号