Sql 指定日期的有效价格
有一张有日期和价格的桌子 Date Price 2012-01-01 25 2012-01-05 12 2012-01-10 10 是否有某种功能可以让我找到“2012-01-07”的当前价格?在我不知道其他日期的情况下 伪查询:选择当前价格'2012-01-07'所在的价格 谢谢 MySQL:Sql 指定日期的有效价格,sql,date,Sql,Date,有一张有日期和价格的桌子 Date Price 2012-01-01 25 2012-01-05 12 2012-01-10 10 是否有某种功能可以让我找到“2012-01-07”的当前价格?在我不知道其他日期的情况下 伪查询:选择当前价格'2012-01-07'所在的价格 谢谢 MySQL: select price from your_table where date <= '201
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
如果您不使用ROW_NUMBER,并且想要一个通用的解决方案,则需要在子查询上加入 获取您想要的日期,然后获取该日期的数据
SELECT
*
FROM
yourTable
INNER JOIN
(
SELECT MAX(yourDate) AS maxDate FROM yourTable WHERE yourDate <= @dateParameter
)
AS lookup
ON yourTable.yourDate = lookup.maxDate
注意,这不是复制粘贴答案,因为我们不知道日期列的数据类型。什么数据库管理系统?日期存储为字符串还是日期数据类型?您的表是否具有自动生效id和产品id?能够为您创建查询非常重要。“2012-01-07”的价格是多少?这是最后一次定价还是以其他方式确定的?2012-01-07的当前价格是多少?12-2012-01-05设定的价格?11.2-2012年1月5日设定的价格在2012年1月10日线性下降至10?更奇怪的事?定义你的问题。@SamDeHaan-这是一个标准模式,基于价格在日期之间不变的假设来回答是合理的。指出这是一个假设也是合理的。但可以更贴切地指出这一点。在你的约会对象周围放点东西,除非你真的想要男人,否则这里的人会帮你。。。我转过身去,得到了所有的答案。。。当然是这么简单:
select price
from table1 t
where t.date = ( select max(t2.date)
from table1 t2
where t2.date <= '2012-01-07' )