如何在SQL中实现Excel COMBIN函数

如何在SQL 2005中实现Excel COMBIN函数,无论是在存储过程还是在函数中。 关于Excel中的COMBINfunction,请参阅此链接 。

谢谢。

  1. 要么执行阶乘函数,要么取决于您可能的input范围,将阶乘结果存储在表中。

  2. 执行公式,如链接所示。

没有内置的方法来做到这一点,你将不得不做一个自定义的用户定义的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))