0

次のコードで日付をランダム化できました

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
4

2 に答える 2

3

以下を使用できます。

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

7 はランダム性の上限です。

于 2013-02-15T12:11:05.160 に答える
0

数値表がある場合、これは非常に簡単です。組み込みの数値表の例

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()

クエリを実行し続けると、毎回異なる数値が得られることがわかります

于 2013-02-15T12:01:49.160 に答える