如何在SQL中实现Excel COMBIN函数
如何在SQL 2005中实现Excel COMBIN函数,无论是在存储过程还是在函数中。 关于Excel中的COMBINfunction,请参阅此链接 。
谢谢。
-
要么执行阶乘函数,要么取决于您可能的input范围,将阶乘结果存储在表中。
-
执行公式,如链接所示。
没有内置的方法来做到这一点,你将不得不做一个自定义的用户定义的function。
而不是像recursion阶乘(像这个论坛讨论中所看到的)做一些疯狂的事情,我会做以下事情:
-
创build一个阶乘查找表,保存预先计算的因子值(可能是1!到100 !,因为100!超过了9.3×10 ^ 157),或者你认为可能需要的高。
-
然后在你的用户定义的函数中,查看
n!, k!, and (nk)!
从表中计算(n!) / (k!) * (nk)!
根据你可能的input值是什么,可能需要预先计算值并将它们存储在一个表中; 然后检索COMBIN(n, k)
就会很容易
SELECT value FROM Combin WHERE n = @n AND k = @k
预先计算似乎更明智,但没有解决scheme。
declare @n int declare @k int SET @n = 8 SET @k = 2 SELECT POWER(10.0, SUM(CASE WHEN Number > (@n - @k) THEN LOG10(Number) ELSE 0 END))/ POWER(10.0, SUM(CASE WHEN Number <= @k THEN LOG10(Number) ELSE 0 END)) FROM master.dbo.spt_values WHERE type='P' AND ((Number > 0 and Number <= @k) OR (Number > (@n - @k) AND Number <= @n))