gpt4 book ai didi

sql - 如何使用 SQL 查询根据条件获取下一条记录?

转载 作者:行者123 更新时间:2023-12-02 05:52:24 25 4
gpt4 key购买 nike

我有一个汽车租赁表,其中记录了汽车租赁Onhire以及归还Offhire的所有日期。我被要求在结果表中提供下一个或后续雇用的公司名称,但我不知道该怎么做。雇佣表的结构如下:

---------------
| Hire |
---------------
| Id |
| CarId |
| Onhire |
| Offhire |
| HireCompany |
|-------------|

如果我对该表运行基本选择,我会看到以下数据。我添加了一个 WHERE 来收回仍在租用的特定汽车,并且不久后就有后续租用(我使用的是英国日期格式)。

Id  |  CarId |  Onhire     |  Offhire    |  HireCompany
-------------------------------------------------------
10 | 272 | 2019-01-01 | 2019-03-01 | Company A
11 | 272 | 2019-03-02 | 2019-04-01 | Company B
-------------------------------------------------------

如您所见,该车目前的租赁期为 2019 年 1 月 3 日,但此后,它将于 2019 年 2 月 3 日出租给 B 公司。我需要我的查询来显示汽车目前正在出租,但在名为 ForwardHire (或其他)的列中显示下一个正在出租的公司以及显示下一个的列雇用开始日期。

因此,我的查询将产生以下所需的结果:

Id  |  CarId |  Onhire     |  Offhire    |  ForwardHire |  ForwardHireDate
---------------------------------------------------------------------------
10 | 272 | 2019-01-01 | 2019-03-01 | Company B | 2019-03-02

Note: I am already aware of how to return a single result from my Hire table using an outer apply, advice which I got in a different thread.

我希望我的问题有意义并且有人可以提供帮助。就 SQL 查询而言,这对我来说是第一次,因此感谢任何建议和指导。

最佳答案

您在寻找 lead功能 ? :

SELECT h.*
FROM (SELECT h.*,
LEAD(HireCompany) OVER (PARTITION BY CarID ORDER BY Id) AS ForwardHire,
LEAD(Onhire) OVER (PARTITION BY CarID ORDER BY Id) AS ForwardHireDate
FROM Hire h
) h
WHERE ForwardHire IS NOT NULL AND ForwardHireDate IS NOT NULL;

关于sql - 如何使用 SQL 查询根据条件获取下一条记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54518847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com