昨日の 1500 時間から今日の 2400 時間までの「ドロップされた」データのサブセットを取得するには、Oracle SQL のヘルプが必要です。
スーパーセットは、昨日の 1500 時間から今日の 1500 時間まで「移動中」になります
私のクエリは、昨日の 1500 時間から今日の 1500 時間まで「ドロップ」しただけです
with A99 as
(
SELECT shipment_id,
holder_employee_id
FROM (
SELECT distinct shipment_id,
holder_employee_id,
shipment_status_id,
row_number()
OVER (
PARTITION BY shipment_id ORDER BY CHANGE_DATE DESC
) AS rn1
FROM db.table1
where (
(TRUNC(CHANGE_DATE) = to_date('{RUN_DATE_YYYY-MM-DD}', 'YYYY-MM-DD')-1 AND TO_CHAR(CHANGE_DATE,'HH24') >=15)
or
(TRUNC(CHANGE_DATE) = to_date('{RUN_DATE_YYYY-MM-DD}', 'YYYY-MM-DD')
AND TO_CHAR(CHANGE_DATE,'HH24') <=15)
)
and region_id=4
)
WHERE rn1 = 1 AND shipment_status_id in ('intransit')
)
select distinct cs.tracking_id,
ce.store_id,
ce.store_name,
cst.station_code,
case
when cssh.shipment_status_id in ('dropped')
and TRUNC(cssh.CHANGE_DATE) >= to_date('{RUN_DATE_YYYY-MM-DD}', 'YYYY-MM-DD')-1
then 0
else 1
end as DAS_STATUS
from A99
inner join db.table1 cssh
on cssh.shipment_id=A99.shipment_id
inner join db.table2 cs
on cs.shipment_id=A99.shipment_id
inner join db.table3 ce
on ce.employee_id = A99 .holder_employee_id
inner join db.table4 cst
on cst.station_id= ce.station_id
where TRUNC(cssh.CHANGE_DATE) >= to_date('{RUN_DATE_YYYY-MM-DD}', 'YYYY-MM-DD')-1