我有一份已经整理(多年)的Excel序列号列表。
当我们生产一件商品时,我们会给它一个唯一的(当天)序列号并发货 该项目将被退回,我们将对其进行翻新,并应用新的序列号。
每次记录旧序列并且新序列同时记录在每天新的Excel表格中时,项目可以返回数百次。
我需要找到翻新 - >返回所有可能项目的历史记录。
所以我已将表格导入MS SQL 2K8:日期,旧序列(x),新序列(y)
我可以使用PHP实时搜索序列x(如果找到),记录它,使搜索x参数== y并继续搜索直到找不到更多记录。
但我确信有一种方法可以单独使用SQL语句获取列表。但我很难过 - 任何线索?
答案 0 :(得分:3)
使用递归CTE。获取所有"新序列号"在旧的之后:
with cte as (
select s.oldserial, s.newserial
from serials s
where oldserial = @x
union all
select s.oldserial, s.newserial
from serials s join
cte
on s.newserial = cte.oldserial
)
select *
from cte;
要获取前任,请将on
条件更改为cte.newserial = s.oldserial
。