发现难以获得最大价值
Posted
技术标签:
【中文标题】发现难以获得最大价值【英文标题】:Finding Difficulty in getting maximum value 【发布时间】:2021-06-16 11:00:34 【问题描述】: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。我正在尝试添加很好的价值并获得最大参考代码。 在顶部,我试图获得基于最大值但到目前为止失败的兴趣类型。例如在视图中,
ID 1 的最大值为 5,需要固定兴趣 ID 2 最大值 6 和兴趣应该是可变的 ID 3 最大值 4 和利息应该是固定的。我试图引起兴趣。这是我的脚本。我正在使用 SQL Server 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
【问题讨论】:
【参考方案1】:可能最简单的方法是使用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
和窗口函数:
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;
【讨论】:
以上是关于发现难以获得最大价值的主要内容,如果未能解决你的问题,请参考以下文章