首页 > 解决方案 > SQL 需要帮助来分配唯一编号或基于日期从最早到最新以及基于产品名称和价格的序列号

问题描述

在此处输入图像描述

直升机,

我想根据图片中提到的 Unit_cost 分配唯一的序列号。但这里的问题是它也应该根据日期分配。基本上想看看不同发布日期的价格变化。每当价格变化需要分配下一个数字。

附件是我正在查看的列 seq num 中的输出类型。

请帮忙

标签: sqlteradata

解决方案


这是一个 *gaps & island" 问题:

select ...
   sum(flag)
   over (partition by item_description ?
         order by posting_date
         rows unbounded preceding) 
from
 (
    select ...
       case when unit_cost 
           = lag(unit_cost) 
             over (partition by item_description ?
                   order by posting_date)
            then 0
            else 1 -- price changed
       end as flag
    from tab
 ) as dt

注意:这需要一个唯一的(= 可重复的)ORDER BY,您的示例数据没有显示。


推荐阅读