這是我的SQL視圖 - 讓叫它MyView的:SQL在一列中選擇基於最大值多列不同的行
ECode SHCode TotalNrShare CountryCode Country 000001 +00010 100 UKI United Kingdom 000001 ABENSO 900 USA United States 000355 +00012 1000 ESP Spain 000355 000010 50 FRA France 000042 009999 10 GER Germany 000042 +00012 999 ESP Spain 000787 ABENSO 500 USA United States 000787 000150 500 ITA Italy 001010 009999 100 GER Germany
我想在列最高數字返回單行每個ECode的TotalNrShare。
例如,我想返回從上述鑑於這些結果:
ECode SHCode TotalNrShare CountryCode Country 000001 ABENSO 900 USA United States 000355 +00012 1000 ESP Spain 000042 +00012 999 ESP Spain 000787 ABENSO 500 USA United States 001010 009999 100 GER Germany
(注意在ECODE 000787的情況下,存在兩個SHCode與每500,因爲它們是相同的量我們可以只返回第一排而不是兩個,對我來說哪一排是非常重要的,因爲這很少會發生,我的分析不需要100%)
我試過各種東西,但似乎不是能夠返回unqiue結果或我需要的其他國家代碼/國家/地區信息。
這是我的嘗試之一(根據本網站上其他解決方案,但我做錯了什麼):
SELECT tsh.ECode, tsh.SHCode, tsh.TotalNrShare, tsh.CountryCode, tsh.Country
FROM dbo.MyView AS tsh INNER JOIN
(SELECT DISTINCT ECode, MAX(TotalNrShare) AS MaxTotalSH
FROM dbo.MyView
GROUP BY ECode) AS groupedtsh ON tsh.ECode = groupedtsh.ECode AND tsh.TotalNrShare = groupedtsh.MaxTotalSH
SQL有哪些風味? MySQL,SQL Server,SQLite,Oracle等都具有不同的功能和不同的語法。另外,你嘗試的SQL查詢有什麼問題?您是否收到錯誤消息或「錯誤」結果?如果是這樣,請顯示這些錯誤或錯誤的結果。 – MatBailie 2012-08-14 11:21:58
如果有任何高手能幫助我,我會非常感激! – NSP 2012-08-14 11:22:33
對不起,我的一些文本被切斷了,它的SQL Server 2005 – NSP 2012-08-14 11:23:13