在sql2014中,我有一個包含4個整數(W,X,Y,Z)和bigint B的表格。其中C(n,k)表示從n個對象中取出的k個對象的組合,即通常的n!/ [k!(nk)!]如何計算tsql中的大組合數量
W,X,Y和Z的最高值是40,所以最大的B是1.37847E + 11 我可以使用Excel(使用函數COMBIN)計算正確的值,但我不能在SQL中相同。我可以用我需要的W,X,Y,Z的所有組合來生成表格,但是當我嘗試計算大數值B時,我不知道如何處理像「40!」這樣的事情。
我想用一個CTE用階乘的preinserted值,是這樣的:
;WITH factorials AS(
SELECT 2 as N, 2 AS F
UNION ALL
SELECT 3,6
UNION ALL...
)
,但我不知道如何存儲40個!等等。
使用.NET填充表格不是一個選項,它應該由SQL創建。
我甚至想過使用一個像CTE這樣的表格,並在兩列或三列中存儲階乘,第一個存儲數十億,第二個存儲數十億億等等(使用INT),但之後我不知道如何在(Ax10^9 + B)/(Cx10^9 + D)中存儲這樣的數字之間進行劃分。
如何在tsql中管理大於bigint的整數?
現在我正在考慮多項式中的好老分區......它似乎幾乎微不足道......但它不是!因爲我仍然需要處理太大的數字可能 –