Sql server 在TSQL中生成组合最有效、最灵活的方法是什么?

Sql server 在TSQL中生成组合最有效、最灵活的方法是什么?,sql-server,tsql,sql-server-2008,combinations,Sql Server,Tsql,Sql Server 2008,Combinations,在TSQL中生成组合最有效、最灵活的方法是什么? 使用“灵活”,我的意思是您应该能够轻松添加组合规则。e、 g:要生成“n”元素的组合,排序、删除重复项、获得每个奖品属于不同彩票的组合,等等 例如,拥有一组表示彩票奖品的数字 Number | Position | Lottery --------------------------- 12 | 01 | 67 12 | 02 | 67 34 | 03 | 67 43 | 01

在TSQL中生成组合最有效、最灵活的方法是什么? 使用“灵活”,我的意思是您应该能够轻松添加组合规则。e、 g:要生成“n”元素的组合,排序、删除重复项、获得每个奖品属于不同彩票的组合,等等

例如,拥有一组表示彩票奖品的数字

Number | Position | Lottery
---------------------------
 12    | 01       | 67
 12    | 02       | 67
 34    | 03       | 67
 43    | 01       | 89
 72    | 02       | 89
 33    | 03       | 89
(我包括位置栏,因为不同彩票的奖品之间可以重复一个数字)

我想生成如下组合:

Numbers | Lotteries
-------------------
 12 12  | 67 67
 12 34  | 67 67
 12 34  | 67 67
 12 43  | 67 89
 12 72  | 67 89
 12 33  | 67 89

        .
        .
        .

这称为交叉连接:

SELECT
    CAST(T1.Number AS VARCHAR) + ' ' + CAST(T2.Number AS VARCHAR) AS Numbers,
    CAST(T1.Lottery AS VARCHAR) + ' ' + CAST(T2.Lottery AS VARCHAR) AS Lottery
FROM table1 T1
CROSS JOIN table1 T2
ORDER BY Numbers

更复杂的方法是使用F#,这样用户就可以使用特定领域的语言编写方程

有关如何使用F#的示例,您可以在本博客中看到最后的评论:

原因是,您需要想出一种简单的方法来进行计算,由用户编写,但另一种选择是使用C#和实体属性值结构(),这样您就可以拥有一个灵活的系统,用户可以为不同类型的彩票或不同的规则创建方程式


但是,根据您真正需要的灵活性,所有这些可能都是多余的。

用C语言编写代码并将其放在MSSQL服务器中是一种选择吗?为什么“12 34”出现两次而“12 43”只出现一次?@Mark我想展示一下彩票第一和第二奖的组合67(而且只有彩票67)。组合1243属于彩票67和89之间的组合:)@James是的,这是一个选项:)很好的方法Mark tahnks+回答得好,詹姆斯,很有创意+非常感谢