【发布时间】:2020-10-09 13:21:49
【问题描述】:
我有以下数据(示例)在 CTE 表中排名;
我想从我的主查询中为每个等级创建一个带有值的新列;每个 ID 只保留一行。
我可以让它每个 ID 有 3 行,用空值填充空白,但找不到每个 ID 有 1 行的解决方案。
谢谢
【问题讨论】:
标签: sql pivot window-functions rank vertica
我有以下数据(示例)在 CTE 表中排名;
我想从我的主查询中为每个等级创建一个带有值的新列;每个 ID 只保留一行。
我可以让它每个 ID 有 3 行,用空值填充空白,但找不到每个 ID 有 1 行的解决方案。
谢谢
【问题讨论】:
标签: sql pivot window-functions rank vertica
我认为您正在寻找类似的东西
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;
【讨论】:
我想你想要条件聚合:
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
【讨论】: