0

1 つの SQL クエリですべてのオファーの特定の日付を取得する必要があります。これらの条件でそれを行う方法がわかりません:

  1. 有効なオファーがある場合は、有効な期間の開始日/終了日が必要です
  2. 期限切れのオファーがある場合は、最後の開始日/終了日が必要です
  3. 将来のオファーがある場合は、最初の開始日/終了日が必要です

テーブルオファー:

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

誰かが私を助けてくれることを願っています!

ありがとうございました!

4

1 に答える 1