我有一个存储每日订单快照的原始数据表,我正在努力将具有相同信息的连续订单记录分组,以返回仅显示每个订单号的更改的查询。以及进一步分析的变更日期。
原始数据如下:
Order no. Date ETD Destination<br/>
01 5/1/2018 7/09/2018 City A<br/>
01 5/2/2018 7/16/2018 City A<br/>
01 5/3/2018 7/16/2018 City A<br/>
01 5/4/2018 7/09/2018 City A<br/>
01 5/5/2018 7/09/2018 City A<br/>
01 5/6/2018 7/09/2018 City A<br/>
我希望结果如下:
Order no. Date ETD Destination<br/>
01 5/1/2018 7/09/2018 City A<br/>
01 5/2/2018 7/16/2018 City A<br/>
01 5/4/2018 7/09/2018 City A<br/>
我目前的做法是使用VBA逐个循环排序数据集,将每个记录与之前的记录进行比较,如果不同,则将其提取到另一个表中。
由于记录太多,性能是时间成本,我想问是否还有其他更好的解决方案。
我尝试使用子查询链接前一天的数据进行比较,但似乎要慢得多。
感谢所有支持。
答案 0 :(得分:0)
如果日期是连续的,没有间隙 - 如示例数据中所示 - 您可以执行以下操作:
select t.*
from t left join
t tprev
on t.orderno = tprev.orderno and t.date = dateadd("d", 1, tprev.date)
where tprev.orderno is null or
(tprev.etd <> t.etd or tprev.destination <> t.destination);