我有以下表格,它代表項目的估值。如何檢索對應於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都會有不同的值。
有人可以提供一個理由(或指向一個理由)更喜歡一個到另一個?
關於你的問題哪個解決方案更好:你將不得不比較每個解決方案的執行計劃。它在很大程度上取決於查詢優化器,定義的索引和涉及的數據。 –