Vertica SQL - 将排名号转换为自己的列
Posted
技术标签:
【中文标题】Vertica SQL - 将排名号转换为自己的列【英文标题】:Vertica SQL - Converting rank number to own column 【发布时间】:2020-10-09 13:21:49 【问题描述】:我有以下数据(示例)在 CTE 表中排名;
我想从我的主查询中为每个等级创建一个带有值的新列;每个 ID 只保留一行。
我可以让它每个 ID 有 3 行,用空值填充空白,但找不到每个 ID 有 1 行的解决方案。
谢谢
【问题讨论】:
【参考方案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
【讨论】:
以上是关于Vertica SQL - 将排名号转换为自己的列的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server - 如何将 RANK 函数插入到已按排名顺序排序的行中?
在 SQL Server 中使用 Dense_Rank 对具有排名的列进行排名组合