我正在尝试编写一个查询,其中仅显示交货日期/时间之前 3 小时且尚未放入 LOADING 或 LOADED 状态代码的记录。如果 LOADING/LOADED 中有状态代码,则预计不会返回任何行。 我不确定我应该使用哪种方法。
表A
账单号码 | 呼叫名称 | 目的地名称 | 行程_编号 | 交付日期 | 状态代码 |
---|---|---|---|---|---|
TS00197548 | ABC | A店 | 62886 | 2025/01/16 16:00 | ASSGN |
TS00197548 | ABC | A店 | 62886 | 2025/01/16 16:00 | 加载中 |
TS00197548 | ABC | A店 | 62886 | 2025/01/16 16:00 | 已加载 |
这是我的询问
SELECT b.bill_number, b.detail_line_id, b.callname, b.destname, a.trip_number, b.deliver_by, a.status_code
FROM odrstat a
LEFT JOIN tlorder b ON a.order_id=b.detail_line_id
WHERE a.trip_number = 62886
AND NOT EXISTS (SELECT 1
FROM odrstat c
WHERE a.order_id=c.order_id AND a.status_code=c.status_code AND a.trip_number=c.trip_number AND a.zone_id=c.zone_id AND a.leg_id=c.leg_id AND c.status_code LIKE 'LOAD%')
AND HOUR(current timestamp)+3 = HOUR(b.deliver_by)
GROUP BY b.bill_number, b.detail_line_id, b.callname, b.destname, a.trip_number,
输出如下。我试图得到一个没有返回任何内容的结果,因为状态代码 LOADING/LOADED 存在。下面的输出应该只显示 LOADING/LOADED 代码不存在并且距离交货时间 3 小时
账单号码 | 呼叫名称 | 目的地名称 | 行程_编号 | 交付日期 | 状态代码 |
---|---|---|---|---|---|
TS00197548 | ABC | A店 | 62886 | 2025/01/16 16:00 | ASSGN |
感谢您的帮助和时间!
我更改了时间过滤器和加载/加载过滤器,您可以尝试一下吗?
SELECT b.bill_number,
b.detail_line_id,
b.callname,
b.destname,
a.trip_number,
b.deliver_by,
a.status_code
FROM odrstat a
LEFT JOIN tlorder b
ON a.order_id = b.detail_line_id
WHERE a.trip_number = 62886
AND NOT EXISTS (
SELECT 1
FROM odrstat c
WHERE c.order_id = a.order_id
AND c.status_code IN ('LOADING', 'LOADED')
)
AND b.deliver_by >= CURRENT_TIMESTAMP + INTERVAL 3 HOUR
AND b.deliver_by < CURRENT_TIMESTAMP + INTERVAL 4 HOUR
GROUP BY b.bill_number,
b.detail_line_id,
b.callname,
b.destname,
a.trip_number,
b.deliver_by,
a.status_code;