【问题标题】:Vertica SQL - Converting rank number to own columnVertica SQL - 将排名号转换为自己的列
【发布时间】:2020-10-09 13:21:49
【问题描述】:

我有以下数据(示例)在 CTE 表中排名;

我想从我的主查询中为每个等级创建一个带有值的新列;每个 ID 只保留一行。

我可以让它每个 ID 有 3 行,用空值填充空白,但找不到每个 ID 有 1 行的解决方案。

谢谢

【问题讨论】:

    标签: sql pivot window-functions rank vertica


    【解决方案1】:

    我认为您正在寻找类似的东西

    with t_cte as (
        select id, value, row_number() over(partition by id order by value) rn
        from mytable)
    select ID, max(case when rn=1 then [Value] else 0 end) Rank1,
               max(case when rn=2 then [Value] else 0 end) Rank2,
               max(case when rn=3 then [Value] else 0 end) Rank3
    from t_cte
    group by ID;
    

    【讨论】:

      【解决方案2】:

      我想你想要条件聚合:

      select
          id,
          max(case when rn = 1 then value end) value1,
          max(case when rn = 2 then value end) value2,
          max(case when rn = 3 then value end) value3
      from (
          select id, value, row_number() over(partition by id order by value) rn
          from mytable
      ) t
      group by id
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-10
        • 2023-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-21
        相关资源
        最近更新 更多