2014-09-04 66 views
1

我在啓動數據和結束日期以及最短持續時間之間得到不同的產品時遇到了一些問題。我的表結構是,通過StartDate和EndDate之間的最短時間獲取產品?

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條記錄?

回答

1

您可以通過使用order bytop做到這一點:

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 
+0

由於它僅適用於1個產品(ID = 1)。我需要爲其他產品做這件事 – user960567 2014-09-04 11:27:13

+0

謝謝我使用Min和Group By修復它 – user960567 2014-09-04 12:06:01

相關問題