Sql server 在TSQL中生成组合最有效、最灵活的方法是什么?
在TSQL中生成组合最有效、最灵活的方法是什么? 使用“灵活”,我的意思是您应该能够轻松添加组合规则。e、 g:要生成“n”元素的组合,排序、删除重复项、获得每个奖品属于不同彩票的组合,等等 例如,拥有一组表示彩票奖品的数字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
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+回答得好,詹姆斯,很有创意+非常感谢