如何根据范围从 1 到 69 的数字列表创建包含 5 个数字排列的列表?

How do I create a list of 5 number permutations based on a list of numbers ranging from 1-69?

我有一个 SQL 服务器数据库,其中包含 NM1-NM69 列及其在字段值中的相应编号:

NM1 | NM2 | NM3 | NM4 | NM5 |...... | NM69
------------------------------------------
1   | 2   | 3   | 4   | 5   |...... | 69

我正在尝试找出此列表的所有 5 个数字排列。我如何以简单易行(嗯..更容易)的方式做到这一点?

示例输出:

PM NM1 | PM NM2 | PM NM3 | PM NM4 | PM NM5 |
--------------------------------------------
68     | 2      | 55     | 43     | 52     |

编辑:我正在使用 SQL

您将数据 UNPIVOT 到一列中,然后 CROSS JOIN 五次。这是一个 SQL Fiddle 排列 5 列选择 3。SQL Fiddle

DECLARE @t TABLE (Field1 INT, Field2 INT, Field3 INT, Field4 INT, Field5 INT)

INSERT INTO @t VALUES (1,2,3,4,5)

; WITH cte AS (
    SELECT u.FieldValue
    FROM @t
    UNPIVOT (
        [FieldValue] FOR [FieldName] IN (
            Field1, Field2, Field3, Field4, Field5
        )
    ) u
)

SELECT
    t1.FieldValue AS PermuteField1,
    t2.FieldValue AS PermuteField2,
    t3.FieldValue AS PermuteField3
FROM
    cte AS t1 CROSS JOIN
    cte AS t2 CROSS JOIN
    cte AS t3
WHERE
    t1.FieldValue <> t2.FieldValue AND
    t1.FieldValue <> t3.FieldValue AND
    t2.FieldValue <> t3.FieldValue