这是我的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