我有一个基于scanningdata(仓库)的数据集。我的目标是分析“运动”。例如BARCODE UNLOAD,此后,货件将收到ASSIGN LOCATION扫描。为此,我需要对SCAN_EVENT_TYPE + SCAN_LOCATION
进行过滤。因此,没有计划从V-14到V-02的移动(=1 movement to many) but the movement from V-02 -> V-02
是他们每天早晨在仓库中进行的一轮扫描,以检查地板上还有多少件物品(=不是多余的运动)< / p>
https://imgshare.io/image/test.nr6iO
问题我如何基于这两个值在此查询中查找,并使用scan_date作为流的检查。
对于我来说,要完全100%准确,我需要使用SCAN_DATE 例如:
FLOW for SHIPMENT A
UNLOAD BARCODE
ASSIGN LOCATION = V-14 08:00
ASSIGN LOCATION = V-02 08:15
ASSIGN LOCATION = V-20 08:30
ASSIGN LOCATION = V-02 08:45
在这种情况下,我想查看两个V-02扫描。因为现在V-20介于两者之间。
FLOW for SHIPMENT B
UNLOAD BARCODE
ASSIGN LOCATION = V-14 08:00
ASSIGN LOCATION = V-02 08:15
ASSIGN LOCATION = V-02 08:45
在此示例中,我只希望看到1个V-02扫描(1个扫描是从他们在仓库中进行的早晨的一轮扫描)
我尝试了内联选择,MIN,MAX值和更多东西。但是我找不到解决问题的办法
select
scal.BARCODE
, scal.SCAN_EVENT_TYPE
, scal.SCAN_DATE
, scal.SCAN_LOCATION
, scal.SCAN_ZONE
, scal.DOCK
, scal.H_ID_ORDER
, scal.ID_GOODS
, scal.SOURCE
from dwh.S_ORD_SCAN_LOCATIONS scal
where scal.BARCODE in
(
select
scal1.BARCODE
from dwh.S_ORD_SCAN_LOCATIONS scal1
where scal1.SCAN_EVENT_TYPE in ('ASSIGN LOCATION', 'BARCODE LOAD', 'BARCODE UNLOAD')
and year(scal1.scan_date) = 2018
group by scal1.BARCODE, scal1.SCAN_EVENT_TYPE, scal1.ID_GOODS
having count(scal1.BARCODE) > 2)
order by 1,2,6
我只想查看收到两次以上扫描的条形码,这些扫描按条形码,scan_event_type和id_goods分组
预期结果 装运A的流程
UNLOAD BARCODE
ASSIGN LOCATION = V-14 08:00
ASSIGN LOCATION = V-02 08:15
ASSIGN LOCATION = V-20 08:30
ASSIGN LOCATION = V-02 08:45
在这种情况下,我希望看到3个“动作”。从V-14到V-02,从V-02到V-20,从V-20到V-02
FLOW for SHIPMENT B
UNLOAD BARCODE
ASSIGN LOCATION = V-14 08:00
ASSIGN LOCATION = V-02 08:15
ASSIGN LOCATION = V-02 08:45
我希望在这里看到1个结果。从V-14到V-02(第二个V-02被取消)