回答

收藏

SQL根据一列中的最大值从多列中选择不同的行

技术问答 技术问答 183 人阅读 | 0 人回复 | 2023-09-12

这是我的SQL视图-称之为MyView:& ?4 n1 s3 o% }6 `( _
ECode SHCode TotalNrShare国家代码国家000001  00010 100 UKI英国000001 ABENSO 美国900美国000355 00012 1000ESP50000035500001000500050000500000050000005000000005FRA法国000042 009999 10 GER99ESP西班牙000787 ABENSO 500美国美国000787 00015000ITA0大利0010010000999 1000GER德国我想为每个ECode返回TotalNrShare列中编号最高的单行。
9 R% w: l, b- y9 V( k* H! I: s* v例如,我想从上面的视图中返回这些结果:- @, \, ?+ c* |8 B4 ?
ECode SHCode TotalNrShare国家代码国家00000ABENSO 美国900美国000355 00012 1000ESP99ESP西班牙000787 ABENSO美国0010100000999 500美国GER德国(请注意,对ECode6 t8 Q" @! M8 U3 k* g, R' O; a
000787,有两个SHCode,每500,因为它们的数量是一样的,我们只能回到第一行而不是两行,所以对我来说不重要的是回到哪一行,因为这很少发生,我的分析不需要100%): k1 e% k* ~, E3 ?
我尝试了各种方法,但我似乎无法返回不正确的结果或我需要的其他国家/地区代码/国家/地区信息。) ?  A1 X( l! r+ {9 k, ?
这是我的尝试之一(基于此站点上的其他解决方案,但我做错了):
& k8 T9 Q# @9 v7 z4 QSELECT tsh.ECode,tsh.SHCode,tsh.TotalNrShare,tsh.CountryCode,tsh.CountryFROM  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               
0 q0 q& K5 w3 f8 {( p  C    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则