【发布时间】:2020-10-04 14:06:36
【问题描述】:
我有 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 等中的 nested for loop 等列上“运行”。还有其他方法吗?创建这个?什么是有效的方法?
【问题讨论】:
-
高效的是使用基于集合的操作,例如交叉连接到自身。你的参数总是相等的吗?
-
不,参数不相等。我仅使用简单的参数进行说明。 @Arvo
-
下次您可能应该提出一个更复杂的示例-从您的示例中我可以创建二进制解决方案-您的 8-s 和 1-s 很好地遵循“显示所有 4 位二进制数”模式: )
-
您能展示一下您的解决方案吗?对于那个问题,这是一个有趣的想法:) 我正在乞求 SQL,所以欢迎提出想法。 @Arvo
-
参数行是否在表中?你是什么意思“除以8”?如果值不同怎么办?
标签: sql sql-server loops while-loop