2012-03-30 56 views
3

得到了一個包含日期和價格的表格。給定日期的有效價格

 
Date     Price 
2012-01-01   25 
2012-01-05   12 
2012-01-10   10 

是否有某種功能可以讓我找到當前價格在'2012-01-07'的地方?沒有我知道其他日期。

Pseudoquery:選擇價格哪裏currentprice( '2012-01-07')

謝謝!

+0

什麼DBMS?日期是作爲字符串還是日期數據類型存儲的? – 2012-03-30 12:56:32

+0

你的餐桌有一個autoincerement id和一個產品ID嗎?能夠爲您創建查詢很重要。 – JotaBe 2012-03-30 12:57:04

+0

'2012-01-07'的價格是多少?這是最後一個價格設定還是以其他方式確定? – SWeko 2012-03-30 12:57:09

回答

3

的MySQL:

select price from your_table 
where date <= '2012-01-07' 
order by date desc 
limit 1 

SQL服務器:

select top 1 price from your_table 
where date <= '2012-01-07' 
order by date desc 
+1

曼人是有幫助這裏...我轉過身去,得到了所有這些問題的答案......關當然是在你的日期這個簡單的:) – freand 2012-03-30 13:12:56

1

如果你沒有使用ROW_NUMBER(),並希望有一個通用的解決方案,你需要加入一個子查詢。

獲取你想要的日期,然後獲取該日期的數據。

SELECT 
    * 
FROM 
    yourTable 
INNER JOIN 
(
    SELECT MAX(yourDate) AS maxDate FROM yourTable WHERE yourDate <= @dateParameter 
) 
    AS lookup 
    ON yourTable.yourDate = lookup.maxDate 
1
select price 
from table1 t 
where t.date = (select max(t2.date) 
        from table1 t2 
        where t2.date <= '2012-01-07') 

這不是複製粘貼&答案,因爲我們不是不知道什麼是你date列的數據類型。

+0

放東西,除非你真的想'<= 2004' – MatBailie 2012-03-30 13:01:25

+0

@Dems指點謝謝這一點。 – 2012-03-30 13:03:32