sql - SQL 需要帮助来分配唯一编号或基于日期从最早到最新以及基于产品名称和价格的序列号
问题描述
直升机,
我想根据图片中提到的 Unit_cost 分配唯一的序列号。但这里的问题是它也应该根据日期分配。基本上想看看不同发布日期的价格变化。每当价格变化需要分配下一个数字。
附件是我正在查看的列 seq num 中的输出类型。
请帮忙
解决方案
这是一个 *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,您的示例数据没有显示。
推荐阅读
- vcpkg - 如何将 osgearth 与 vcpkg 一起使用
- asp.net-core - 将框架和本机运行时文件移动到子文件夹中
- php - 如何在使用 sed commnad 将文本转换为 csv 时将重复列显示为单独的列?
- angular - Angular 8 使用 Ivy 创建自定义元素
- javascript - html-minifier node.js TypeError: value.replace 不是函数
- fiware - 作为名称上下文代理的属性
- python - 使用不等式约束和边界优化非标量函数
- javascript - 如何在上传多个文件时减少上传时间
- javascript - 不允许在电子邮件中使用连字符
- python - python list append in for循环只获取完整列表