gpt4 book ai didi

sql-server-2008-r2 - 带有随机数的 SQL 用户定义函数

转载 作者:行者123 更新时间:2023-12-01 09:03:47 27 4
gpt4 key购买 nike

我希望有人可以帮助我。

我试图在 MS server 2008 上使用 SQL 用户定义函数来执行以下操作

我试图预测客户何时会离开银行,并且我会通过一系列的抛硬币来做到这一点,直到您离开。抛硬币不一定总是在 50/50,因此我可以将概率作为参数以及当前客户任期传递给函数。

问题是不允许在函数内部使用RAND(),我不明白为什么但是没关系,一定有原因。

这是我的功能:

create function NewTenure (@tenure integer, @p float) 
returns integer
as
begin
declare @r float
declare @newten int
declare @attrite binary
set @attrite=0
set @newten = @tenure
set @r = RAND()
while (@attrite = 0)
begin
if (@r <= @p) set @attrite = 1;
if (@r > @p) set @newten = @newten+1
end
return(@newten)
end

如我所见,我需要生成一个介于 0-1 之间的随机值,以便将其与确定客户是否离开的概率进行比较。如果不允许 RAND(),是否有 SQL 技巧在函数内部生成它? (我多年前从学校知道我可以编写自己的随机数生成器,但我不想这样做,也不认为我应该这样做,随机数是人们应该期望的基本计算机功能 -我用过的任何其他语言都有一个)

我计划在新查询中调用该函数,以在他们离开时使用预测的任期更新临时表,然后将其用于其他复杂的计算。

最佳答案

这是一个肮脏的把戏。

CREATE VIEW dbo.vRand
AS
SELECT r = RAND();
GO

CREATE FUNCTION dbo.fRand()
RETURNS DECIMAL(10,9)
AS
BEGIN
RETURN (SELECT r FROM dbo.vRand);
END
GO

SELECT name, dbo.fRand()
FROM sys.all_objects;

关于sql-server-2008-r2 - 带有随机数的 SQL 用户定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12080245/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com