2012-03-30 3 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

Какие СУБД? Дата хранится в виде строки или типа даты? –

+0

У вашей таблицы есть идентификатор автоинкремента и идентификатор продукта? Важно иметь возможность создать запрос для вас. – JotaBe

+0

И какова цена для '2012-01-07'? Это последняя цена, или она определяется каким-то другим способом? – SWeko

ответ

3

MySQL:

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

SQL Server:

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

Люди-люди здесь полезны ... я отвернулся и получил все эти ответы ... Конечно, это было так просто :) – freand

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

+0

@ Спасибо за указание это из. –

Смежные вопросы