发现获得最大价值的困难

Finding Difficulty in getting maximum value

V_ABC(它是一个视图)

ID        value   interest  Reference Code  

 1           5       Fixed             2
 1           2       Variable          4
 2           6       Variable          5
 2           2       Fixed             1
 3           4       Fixed             5
 3           1       Variable          4

我需要这个输出。

ID    value     Interest      Reference Code
1      7           Fixed            4
2      8           Variable         5
3      5           Fixed            5

我有一个观点V_ABC。我正在尝试增加很好的价值并获得最大参考代码。 在顶部,我正在尝试获取基于最大值但到目前为止失败的兴趣类型。例如在视图中,

我正在尝试获得兴趣。这是我的脚本。我正在使用 SQL 服务器 2016

Select id,sum(value),Max(ReferenceCode)
(

Select id,value,

first_value(Interest) over (Partition by value Order by value desc) as Interest,Referencecode  From V_ABC

)dd

group by id

可能最简单的方法是使用row_number()和条件聚合:

select id, sum(value),
       max(case when seqnum = 1 then interest end),
       max(case when seqnum = 1 then reference_code end)
from (select t.*,
             row_number() over (partition by id order by value desc) as seqnum
      from t
     ) t
group by id;

如果你想花哨,可以使用select distinct和window功能:

select distinct id,
       sum(value) over (partition by id),
       first_value(interest) over (partition by id order by value desc),
       first_value(reference_code) over (partition by id order by value desc)
from t;