【问题标题】: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

【问题讨论】:

    标签: sql sql-server sql-server-2016


    【解决方案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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多