我遇到一些问题,需要在开始数据和结束日期以及最短持续时间之间获得不同的产品。我的表结构是,
ID SKU Desc1 Desc2 Price PriceFrom PriceTo
-------------------------------------------------------
1 xxxx xxxx xxxx 12 1/1/2014 1/1/2015
1 xxx xxxx xxxx 12 1/1/2014 2/1/2014
1 xxx xxxx xxxx 12 9/1/2014 10/1/2014
让我们说今天的日期是09/04/2014。所以我们有2个选项记录1和3(因为2超出了今天的范围),但我选择3,因为第3个记录的持续时间少于第1个记录?
答案 0 :(得分:1)
您可以使用order by
和top
:
select top 1 t.*
from table t
where cast(getdate() as date) >= PriceFrom and cast(getdate() as date) <= PriceTo
order by datediff(day, PriceFrom, PriceTo) asc;
<强>更新强>
SELECT
MIN(DATEDIFF(DAY, t.PriceFrom, t.PriceTo)),
t.ID,
t.Name,
t.ModelNumber,
t.Description,
t.Price,
t.NewPrice,
t.SKU
FROM Products t
WHERE GETDATE() BETWEEN PriceFrom AND PriceTo
GROUP BY t.ID,
t.Name,
t.ModelNumber,
t.Description,
t.Price,
t.NewPrice,
t.SKU