在给定日期的有效价格

时间:2012-03-30 12:53:43

标签: sql date

得到了一张有日期和价格的表格。

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

是否有某种功能可以让我找到“2012-01-07”的当前价格?没有我知道其他日期。

伪查询:选择当前价格('2012-01-07')

的价格

谢谢!

3 个答案:

答案 0 :(得分: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 :(得分: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

答案 2 :(得分:1)

 select price 
 from table1 t 
 where t.date = ( select max(t2.date) 
                  from table1 t2
                  where t2.date <= '2012-01-07' )

注意这不是复制和粘贴答案,因为我们不知道您的date列的数据类型是什么。