1 つの SQL クエリですべてのオファーの特定の日付を取得する必要があります。これらの条件でそれを行う方法がわかりません:
- 有効なオファーがある場合は、有効な期間の開始日/終了日が必要です
- 期限切れのオファーがある場合は、最後の開始日/終了日が必要です
- 将来のオファーがある場合は、最初の開始日/終了日が必要です
テーブルオファー:
OfferID Name
10 Current Offer
20 Expired Offer
30 Coming Offer
テーブル OfferDates: (NULL = 無限のオファー)
OfferID StartDate EndDate
10 2000-01-01 2009-12-31
10 2010-01-01 NULL //Need this (1.)
20 1900-01-01 1900-12-31
20 1901-01-01 1901-12-31 //Need this (2.)
30 2030-01-01 2030-12-31 //Need this (3.)
30 2031-01-01 NULL
これは結果になるはずです:
OfferID Name StartDate EndDate
10 Current 2010-01-01 NULL
20 Expired 1901-01-01 1901-12-31
30 Coming 2030-01-01 2030-12-31
これにより、アクティブなオファーが表示されます (1.):
SELECT o.Name, d.StartDate, d.EndDate FROM Offer AS o
LEFT JOIN OfferDates AS d ON o.OfferID = d.OfferID
WHERE d.StartDate <= GETDATE() AND (d.EndDate IS NULL OR d.EndDate > GETDATE())
誰かが私を助けてくれることを願っています!
ありがとうございました!