我有以下表格,它代表项目的估值。如何检索对应于SQL中其他列中的最大值的值?
ITEM REFERENCEDATE VALUATION
------------------------------------------------
A 25/01/2012 25.35
A 26/01/2012 51.35
B 25/01/2012 25.00
编辑:(ITEM,REFERENCEDATE)是一个独特的索引。
目标是获得一组物品的最新估价。这意味着我试图创建一个SQL请求,将返回类似
ITEM REFERENCEDATE VALUATION
------------------------------------------------
A 26/01/2012 51.35
B 25/01/2012 25.00
流动对GROUP BY的教程,我最终设法希望SQL服务器会理解的
SELECT A.ITEM, A.VALUATION, MAX(A.REFERENCEDATE)
FROM VALUATIONS A
GROUP BY A.ITEM
全部我需要A.VALUATION来实现对当前结果行上表示的ITEM的A.REFERENCEDATE的最大值。
但是,相反,我有这个令人不快的错误消息:
Column 'VALUATIONS.VALUATION' is invalid in the select list because it is not contained
in either an aggregate function or the GROUP BY clause.
我怎么能指示应使用其中达到最大REFERENCEDATE的估值?
注:我需要工作至少在甲骨文的解决方案和SQL Server
编辑:谢谢大家的帮助。我被困在一个洞中,试图逃脱只有一个SELECT ... GROUP BY请求。现在我看到有一些阐明围绕着同样的想法两种方法:
- 制作与其他独立的请求的结果,将返回所有的项目/ MAX(日期)夫妇
- 使用子请求结果的JOIN在where子句中,每个item都会有不同的值。
有人可以提供一个理由(或指向一个理由)更喜欢一个到另一个?
关于你的问题哪个解决方案更好:你将不得不比较每个解决方案的执行计划。它在很大程度上取决于查询优化器,定义的索引和涉及的数据。 –