テーブルには 400 万行あり、2010 年、2011 年、2012 年の 3 年間に分割されたキャンセルされた予約と呼ばれる空白の列があります。
Booking_Skey BookingNumber ArrivalDate DepartureDate BookingDate CancelledDate BookingValue PitchType_Skey Site_Skey
124532 B00124532 2010-12-31 2011-01-02 2010-12-31 NULL 10.00 7 2
私がする必要があるのは、更新したい年のキャンセル率を変更できるコードを作成することです。
したがって、2010年には次のものが必要です
--キャンセルされた予約--
- 2010 年には、予約全体の 8% がキャンセルされます。キャンセル日は、到着日と同じかそれより短く、予約日と同じかそれよりも長くなる可能性があります。
- 8%の20%は到着日と同じ日にキャンセルされます
- 8%の20%が到着日の前日にキャンセルされます
- 8% の 20% は、到着日の 7 日前にキャンセルされます。
- 残りのキャンセルは、1 日から 90 日の間でランダム化されます
.
USE Occupancy
SELECT ArrivalDate,
DATEADD(day,
CASE WHEN Rand(CHECKSUM(NEWID())) BETWEEN 0 and 0.92 THEN NULL ELSE
CASE WHEN Rand(CHECKSUM(NEWID())) BETWEEN 0.92 and 0.94 THEN 0 ELSE
CASE WHEN Rand(CHECKSUM(NEWID())) BETWEEN 0.94 and 0.96 THEN -1 ELSE
CASE WHEN Rand(CHECKSUM(NEWID())) BETWEEN 0.96 and 0.98 THEN -7 ELSE
Round(Rand(CHECKSUM(NEWID())) * -90,0) END END END END, ArrivalDate) AS DaystoReduce
FROM Bookings
WHERE DATEPART(Year,ArrivalDate) = '2010' and CancelledDate BETWEEN ArrivalDate AND DepartureDate
手伝ってくれますか?
ありがとう
ウェイン