Tsql 随机数

Tsql 随机数,tsql,Tsql,我已经能够随机日期与以下代码 DATEADD (day, CAST (RAND () * 365 as int), '2010-1-1') 我现在需要对1到7和1到126之间的数字进行计算 你能帮忙吗 SELECT 'Booking_' + Cast(Seed.Seed as varchar(25)) as BookingNo, DATEADD(day, ABS(CHECKSUM(NEWID()) % 800), '1 Jan 2010') as ArrivalDate, DA

我已经能够随机日期与以下代码

DATEADD (day, CAST (RAND () * 365 as int), '2010-1-1') 
我现在需要对1到7和1到126之间的数字进行计算

你能帮忙吗

SELECT        'Booking_' + Cast(Seed.Seed as varchar(25)) as BookingNo,
DATEADD(day, ABS(CHECKSUM(NEWID()) % 800), '1 Jan 2010') as ArrivalDate,
DATEADD (day, CAST (RAND () * 365 as int), '2010-1-1') % 6 + 1 as PitchType

FROM            Seed CROSS JOIN
                         Seed AS Seed_1 CROSS JOIN
                         Seed AS Seed_2 CROSS JOIN
                         Seed AS Seed_3 CROSS JOIN
                         Seed AS Seed_4 CROSS JOIN
                         Seed AS Seed_5

如果您有一个数字表,这是非常简单的,例如内置的数字表

在1到7之间

select top 1 number
from master..spt_values
where type ='p'
and number between 1 and 7
order by newid()
在1到126之间

select top 1 number
from master..spt_values
where type ='p'
and number between 1 and 126
order by newid()

继续执行查询,您将看到每次都会得到不同的数字

如果您有一个数字表,这非常简单,例如内置的数字表

在1到7之间

select top 1 number
from master..spt_values
where type ='p'
and number between 1 and 7
order by newid()
在1到126之间

select top 1 number
from master..spt_values
where type ='p'
and number between 1 and 126
order by newid()
继续执行查询,您将看到每次使用时都会得到不同的数字:

SELECT CAST(RAND(CHECKSUM(NEWID())) * 7 + 1 AS INT)
其中7是随机性的上界

您可以使用:

SELECT CAST(RAND(CHECKSUM(NEWID())) * 7 + 1 AS INT)

其中7是随机性的上界

对不起,我没有正确解释下一行是随机数不是日期。对不起,我没有正确解释下一行将是一个随机数而不是日期。嗨,SQLMencae,我已将我的sqlcode添加到我的原始帖子中,以便您可以看到我所做的。嗨,SQLMencae,我已将我的sqlcode添加到我的原始帖子中,以便您可以看到我所做的。嗨,Matt,非常感谢。如果我想在行中添加一个case语句,例如case,当选择PitchTypeWeighting from PitchType=4,然后选择40%的预订量等时,我将如何执行此操作?您可以将其包装在case语句中。选择CASE CASTRANDCHECKSUMNEWID*7+1作为INT当1时,然后当2时,然后等etch蚀刻Matt perfect谢谢。如果我想在行中添加一个case语句,例如case,当选择PitchTypeWeighting from PitchType=4,然后选择40%的预订量等时,我将如何执行此操作?您可以将其包装在case语句中。选择CASE CASTRANDCHECKSUMNEWID*7+1作为INT当1时,然后当2时,依此类推