【发布时间】:2013-08-15 09:31:58
【问题描述】:
我需要在一个 SQL 查询中获取所有优惠的具体日期。我不知道如何在这些条件下做到这一点:
- 如果有有效报价,我需要有效期间的开始/结束日期
- 如果有一个过期的报价,我需要last开始-/结束日期
- 如果有未来的报价,我需要first Start-/Enddates
餐桌优惠:
OfferID Name
10 Current Offer
20 Expired Offer
30 Coming Offer
餐桌优惠日期:(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())
希望有人能帮帮我!
谢谢!
【问题讨论】: