sql - 使用 SQL,我可以遍历复合键上的表以查找特定数据并计算新值吗?
问题描述
如果我有一个包含订单号和时间戳的复合键的数据集,我可以遍历时间戳以搜索特定时间的数据值吗?例如,我想遍历特定的订单号,直到找到包含 BOL 的第一个时间戳,然后将该日期记录插入到新表中。一般来说,我试图在订单的“生命周期”中找到事件之间的天数。
示例数据:
| Order | Timestamp | BOL |
| ------| ---------- |---------|
| 12345 | 05.25.21.05:00 |null |
| 12345 | 05.26.21.05:00 |512345 |
| 67890 | 05.25.21.05:00 |null |
| 67890 | 05.26.21.05:00 |556725 |
伪代码:
SET @i=0;
while(i<size(order.timestamps())){
if(order.timestamp[i].BOL is NULL)
i++;
else
order.bolDate = order.timestamp(i);
exit;
}
感谢您的任何帮助,即使它只是一个链接!
解决方案
好吧,好像你想这样做,这样你就不需要迭代:
insert into newtable (<column list>)
select order , timestamp , bop
from ( select * , row_number() over (partition by Order order by timestamp) rn
from dataTable
where BOP is not null
) t
where rn = 1
上面的查询找到每个具有 BOP 的订单的最早时间戳,并且可以直接将数据插入到新表中。
推荐阅读
- python - 在 azure blob 中存储和附加 numpy 数组
- python - 熊猫读取 json ValueError:协议未知
- html - 我在 Django 框架中的单击按钮上调用另一个页面,但它不起作用
- javascript - AMP 验证错误会影响 SEO 结果吗?
- sql - 查找前 2 个月价值较大的记录
- r - 在 iris 数据集中发现额外的列
- python - Pandas 数据框中带有 group_by 的 if-else 语句
- reactjs - 应用程序中对 antd 组件的多次覆盖
- node.js - Node JS Express 应用程序中的 MaxListenersExceededWarning
- python - 使用 Jupyter 运行 python 包