我在 teradata 表中有一个包含以下字段的数据集
我想排名或行号聚合进一步分析 基于字段:更改时的销售计划。
无法对它们进行适当的排名取决于变化,我尝试了 group by、rank 和 dense rank 但没有产生正确的结果
我得到如下结果集:
但期待的结果
如何得到预期的结果?
这是一种 gaps & islands 问题,您需要计算一个 0/1 标志,只要 sales_plan 与上一行相比发生变化,该标志就会设置为 1。然后你对这个标志做一个累积和来获得“排名”:
with cte as
(
select ...
case when sales_plan = lag(sales_plan, 1, sales_plan)
over (partition by order_prod_id
order by sales_date)
then 0
else 1
end as flag
from my_table
)
select ...
sum(flag) over (partition by order_prod_id
order by sales_date) + 1 as rnk
from cte