开发者社区> 问答> 正文

SQL查询以获取最新价格

我有一个表,其中包含MS SQL 2005表中许多不同“事物”的价格。每天每件事有数百条记录,不同的事物在不同的时间获取价格更新。

ID uniqueidentifier not null,
ThingID int NOT NULL,
PriceDateTime datetime NOT NULL,
Price decimal(18,4) NOT NULL

我需要获取一组物品的最新价格。下面的查询有效,但是我要返回几百行,并且必须循环遍历它们,并且每个ThingID仅提取最新的一行。我如何(例如通过GROUP BY)说我想要每个ThingID最新的?还是我必须使用子查询?

SELECT * 
FROM Thing
WHERE ThingID IN (1,2,3,4,5,6)
  AND PriceDate > cast( convert(varchar(20), getdate(), 106) as DateTime)

展开
收起
心有灵_夕 2019-12-26 21:58:04 1193 0
1 条回答
写回答
取消 提交回答
  • 如果子查询路线太慢,我会考虑将您的价格更新作为审核日志并维护ThingPrice表-可能作为价格更新表的触发器:

    ThingID int not null,
    UpdateID int not null,
    PriceDateTime datetime not null,
    Price decimal(18,4) not null
    
    

    主键只是ThingID,而“ UpdateID”是原始表中的“ ID”。

    2019-12-26 21:58:21
    赞同 展开评论 打赏
问答分类:
SQL
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载