1

TSQLで組み合わせを生成するための最も効果的で柔軟な方法は何ですか?「柔軟」とは、組み合わせルールを簡単に追加できるはずだということです。例:「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

        .
        .
        .
4

2 に答える 2

2

これはCROSSJOINと呼ばれます。

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
于 2010-05-10T17:28:08.353 に答える
1

より複雑なアプローチは、ユーザーがドメイン固有言語を使用して方程式を記述できるようにF#を使用することです。

F#の使用方法の例については、このブログの最後のコメントを参照してください。

http://cs.hubfs.net/forums/thread/4496.aspx

その理由は、ユーザーが作成した計算を簡単に行う方法を考え出す必要があるためですが、他のオプションは、C#とEntity-Attribute-Value構造(http://en.wikipedia)を使用することです。 org / wiki / Entity-attribute-value_model)。これにより、ユーザーがさまざまな種類の宝くじやさまざまなルールの方程式を作成できる柔軟なシステムを構築できます。

しかし、実際に必要な柔軟性によっては、これらすべてが必要なものに対してより過剰になる可能性があります。

于 2010-05-11T00:28:36.667 に答える