发现获得最大价值的困难
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。我正在尝试增加很好的价值并获得最大参考代码。
在顶部,我正在尝试获取基于最大值但到目前为止失败的兴趣类型。例如在视图中,
- ID 1 的最大值为 5,需要固定利息
- ID 2 最大值 6 且利息应可变
- ID 3 最大值为 4,利息应该是固定的。
我正在尝试获得兴趣。这是我的脚本。我正在使用 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;
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 服务器 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;