这是我的 SQL 视图 - 我们称之为 MyView :
ECode SHCode TotalNrShare CountryCode Country 000001 +00010 100 UKI 英国 000001 ABENSO 900 USA 美国 000355 +00012 1000 ESP 西班牙 000355 000010 50 FRA 法国 000042 009999 10 GER 德国 000042 +00012 999 ESP 西班牙 000787 ABENSO 500 USA 美国 000787 000150 500 ITA 意大利 001010 009999 100 GER 德国
我想为每个 ECode 返回 TotalNrShare 列中数字最大的单行。
例如,我想从上面的视图返回这些结果:
ECode SHCode TotalNrShare CountryCode Country 000001 ABENSO 900 USA 美国 000355 +00012 1000 ESP 西班牙 000042 +00012 999 ESP 西班牙 000787 ABENSO 500 USA 美国 001010 009999 100 GER 德国
(请注意,在 ECode 000787 的情况下,其中有两个 SHCode,每个 500,因为它们的数量相同,我们可以只返回第一行而不是两者,对我来说返回哪一行并不重要,因为这种情况很少发生并且我的分析不需要是 100%)
我尝试了各种方法,但似乎无法返回唯一的结果或我需要的其他国家代码/国家信息。
这是我的尝试之一(基于此站点上的其他解决方案,但我做错了):
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