我有4个参数。我需要创建一个新的表来保存这4个参数的所有可能的变化。这是4个参数的示例:
原始参数:
p1 | p2 | p3 | p4 |
=====+=====+=====+=====+
8 | 8 | 8 | 8 |
新表应包含:
p1 | p2 | p3 | p4 |
=====+=====+=====+=====+
8 | 8 | 8 | 8 | The original raw
1 | 8 | 8 | 8 | One cell devided by 8 (4 rows overall)
8 | 1 | 8 | 8 |
8 | 8 | 1 | 8 |
8 | 8 | 8 | 1 |
1 | 1 | 8 | 8 | Two cells divided by 8 (6 rows overall)
1 | 8 | 1 | 8 |
1 | 8 | 8 | 1 |
8 | 1 | 1 | 8 |
8 | 1 | 8 | 1 |
8 | 8 | 1 | 1 |
1 | 1 | 1 | 8 | Three cells divided by 8 (4 rows overall)
1 | 1 | 8 | 1 |
1 | 8 | 1 | 1 |
8 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | All cells divided by 8 (1 row overall)
我正在寻找最有效的方法,因为下一个级别可能是使用5个参数(并执行各种数学运算)执行相同的操作。
我想使用while循环,但我不知道如何在列上“运行”,比如c/c++/java/python中的嵌套for循环。还有其他方法来创建它吗?有效的方法是什么?
2条答案
按热度按时间icomxhvb1#
这个
cross join
解决方案:piah890a2#
根据您的评论,您可以使用
apply
:注意:sql查询返回固定数量的列。如果需要处理数量可变的参数,则需要动态sql。
也就是说,如何处理您需要处理的任何特定数量的参数应该是显而易见的。