访问中的部分组记录

时间:2018-05-08 16:46:25

标签: sql vba ms-access

我有一个存储每日订单快照的原始数据表,我正在努力将具有相同信息的连续订单记录分组,以返回仅显示每个订单号的更改的查询。以及进一步分析的变更日期。

原始数据如下:

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逐个循环排序数据集,将每个记录与之前的记录进行比较,如果不同,则将其提取到另一个表中。

由于记录太多,性能是时间成本,我想问是否还有其他更好的解决方案。

我尝试使用子查询链接前一天的数据进行比较,但似乎要慢得多。

感谢所有支持。

1 个答案:

答案 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);