sql - SQL:从 Select 语句中过滤最近的日期条目
问题描述
我希望有人可以帮助解决这个问题。MIN() 函数没有按预期工作,可能是因为我需要在某个地方有一个 JOIN,但我尝试过的所有连接都没有工作。我发现的任何示例,例如SQL:为每个类别选择最近的日期只是基本的,并且不包括在某些列上具有匹配条目的多行或从多个表中进行选择。
SELECT TruckNo, MIN(ArrivalDate) AS ArrivalDate, DockId, FreightCode
FROM tblTruckArrival
WHERE ArrivalDate <> '' AND DockId IN (660,517,86,9,253,685)
GROUP BY TruckNo, DockId, FreightCode
ORDER BY TruckNo
当我想要的是每个 DockId 的下一个到达日期而不是未来日期时,这会返回类似这些结果的结果,其中包括每个 DockId 的多个 ArrivalDates。如果我从 Select 语句中删除 FreightCode,我会得到正确的结果(可能是因为某些条目对相同的 DockId 有不同的 FreightCode),但我需要知道返回的每一行的 FreightCode 是什么。
TruckNo ArrivalDate DockId FreightCode
22 2018-07-13 253 03WS18
22 2018-08-29 253 04WS18
22 2018-10-16 253 05WS18
22 2018-12-03 253 06WS27
23 2018-09-02 86 808ES
23 2018-09-12 685 808ES
24 2018-11-24 86 810ES
25 2018-06-17 86 805ES
25 2018-06-28 517 805ES
25 2018-12-04 517 810ES
26 2018-07-03 9 805ES
27 2018-07-13 86 806ES
应该返回这个:
TruckNo ArrivalDate DockId FreightCode
22 2018-07-13 253 03WS18
23 2018-09-02 86 808ES
23 2018-09-12 685 808ES
24 2018-11-24 86 810ES
25 2018-06-17 86 805ES
25 2018-06-28 517 805ES
26 2018-07-03 9 805ES
27 2018-07-13 86 806ES
解决方案
If you add FreightCode in group by statement, obviously it will give results basis every FreightCode. Correct me if I am wrong, you want the FreightCode corresponding to the each truckno and min arrival date. For that try this out:
select a.*,b.freightcode
from
(select truckno, dockid, min(arrivaldate) as arrivaldate
from tbltruckarrival
where arrivaldate <> '' and dockid in (660,517,86,9,253,685)
group by truckno, dockid) a
left join
tbltruckarrival b
on a.truckno = b.truckno and a.arrivaldate = b.arrivaldate and a.docket_id = b.docket_id
order by a.truckno
Let me know in case of any clarifications.
推荐阅读
- typescript - 与生产模式相比,css-modules-typescript-loader 在开发模式下的行为不同
- plpgsql - 如何在 liquibase 中声明和运行匿名 plpgsql 块
- c++ - 是否可以将我的 c++ 代码放入窗口而不是在命令提示符下打开?
- flutter - RawKeyboardListener 在 Flutter for Windows 上不起作用
- css - 如何修复框阴影过渡不适用于悬停?
- sql - 以字符串+id作为返回的sql case语句
- angular - 如何在 azure msal 中添加忘记密码和更改电话号码的自定义策略?
- javascript - 如何检查或避免 ERR_TIMED_OUT 错误?
- flow - 如何在红绿灯路口加装探测器?
- google-cloud-platform - 浏览器中的 javascript 如何打开与 GCP 负载均衡器后面特定后端的 socket.io 连接?