sql - 对此的SQL解决方案?
问题描述
汽车表(Car_id、Cus_id、型号、Delivery_Date、Reg_No)
101 1 Yaris - Active 05-Jan-2016 aa-168
102 1 Yaris 06-Jan-2017 ab-168
103 2 Fortuner 07-Jan-2017 aa-1111
104 3 Vios 08-Jan-2017 aa-1234
105 3 Altis 09-Feb-2017 ab-5555
106 4 Camry 10-Feb-2016 ab-9999
107 5 Hilux Revo 11-Feb-2017 aa-6666
服务表(Car_id、Service_Date、Service_Amount、Service_Detail)
101 05-Feb-2016 2565 1000km
101 10-Aug-2016 3400 10000km
101 20-Feb-2016 2100 20000km
102 06-Feb-2017 2565 1000km
103 07-May-2017 3400 10000km
104 08-Feb-2017 2565 1000km
105 09-May-2017 2565 1000km
106 10-Mar-2016 2565 1000km
106 15-Aug-2016 3400 10000km
106 20-Dec-2016 2100 20000km
我的目标是从两个表中查询值,以便它显示
目标表(模型、Reg_No、Last_Service、Previous_Service)
Yaris-Active aa-168 20-Feb-2016 10-Aug-2016
Yaris ab-168 06-Feb-2017 -
.............................................
Camry aa-9999 20-Dec-2016 15-Aug-2016
如您所见,Last_Service 将包含汽车使用该服务的最后日期,而 Previous_Service 将包含汽车在服务之前使用该服务的日期。我的基本步骤是在汽车和服务台之间使用 LEFT JOIN,因为它倾向于汽车台。
我的预期步骤是查询 Car_id 和 Count(Car_id) 以及 Group By Car_id,因为它将指示该汽车的存在数量。之后,使用计数来指示该模型的最后一行和倒数第二行,并将值指定给指定列...但是,我必须将其转换为 SQL...。
SELECT Model, Reg_No, Service_Date As Last_Service, Service_Date As Previous_Date
FROM Car LEFT JOIN Service ON Car.Car_id = Service.Car_id
..................................................... .....................
SELECT Car_id, Count(Car_id) As No.Times
From Service
Group BY Car_id
我需要帮助...
解决方案
试试这样...
SELECT Model,
Reg_No,
Service_Date
INTO #Temp_Output_1
FROM Temp_Car Car
JOIN Temp_Service Servic
ON (Car.Car_id = Servic.Car_id)
SELECT Model,
Reg_No,
Service_Date,
(SELECT MAX(Service_Date) FROM #Temp_Output_1 T1 WHERE T1.Reg_No = T2.Reg_No AND T1.Service_Date < T2.Service_Date) AS Prev_Service_Date
FROM #Temp_Output_1 T2
WHERE T2.Service_Date = (
SELECT MAX(Service_Date)
FROM #Temp_Output_1 T3
WHERE T2.Reg_No = T3.Reg_No
)
推荐阅读
- java - 当 onscrollchangelistener 使用 webview 滚动时,应用程序在给定的 scrollY 上崩溃
- python-3.x - 将问题和名称变量添加到代码 - Python
- android - 地方建议未加载在地方自动完成
- asp.net-identity - 身份服务器无效的参考令牌错误
- ag-grid - 从 Ag-grid 9.1.0 中的特定页面开始
- c# - 错误 CS1525:意外符号“?”,应为“。” 在单体开发中
- c# - WPF MVVM Tabconrol 突出显示带有验证错误的选项卡
- cuda - 示例 deviceQuery cuda 程序
- javascript - 递归地从 javascript 对象中添加和删除值
- python - 覆盖 AuthenticationForm 类以使用电子邮件登录