2013-02-15 68 views
0

我已經能夠隨機化的日期與下面的代碼隨機化數字SQL

DATEADD (day, CAST (RAND() * 365 as int), '2010-1-1') 

我現在需要做的是1和7以及11和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 
+0

對不起,我沒有正確解釋下一行將是一個隨機數而不是日期。 – wafw1971 2013-02-15 12:02:30

回答

3

您可以使用:

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

其中7是綁定你的隨機性的頂部。

+0

嗨馬特完美的謝謝。如果我想在案例中添加一個case語句,例如 case(從PitchType = 4然後選擇40%的預訂中選擇PitchTypeWeighting)等等,我該怎麼做呢? – wafw1971 2013-02-15 12:25:53

+0

您可以將其包裝在CASE語句中。 SELECT CASE CAST(RAND(CHECKSUM(NEWID()))* 7 + 1 AS INT)當1 THEN''THEN''等等等等 – Matt 2013-02-15 12:42:29

0

如果你有一個數字表,這是很容易的,用內置的數字表

1和7 1和126

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

之間

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

例子

繼續執行查詢,您將看到每次都會得到不同的號碼

+0

您好SQLMencae我已經將我的sqlcode添加到我的原始文章中,以便您可以看到我所做的。 – wafw1971 2013-02-15 12:03:44