我有一个表,其中包含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)
如果子查询路线太慢,我会考虑将您的价格更新作为审核日志并维护ThingPrice表-可能作为价格更新表的触发器:
ThingID int not null,
UpdateID int not null,
PriceDateTime datetime not null,
Price decimal(18,4) not null
主键只是ThingID,而“ UpdateID”是原始表中的“ ID”。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。