首页 > 解决方案 > 使用 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;
}

感谢您的任何帮助,即使它只是一个链接!

标签: sqldatabasedata-manipulationalteryx

解决方案


好吧,好像你想这样做,这样你就不需要迭代:

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 的订单的最早时间戳,并且可以直接将数据插入到新表中。


推荐阅读