我已經創建了 「旅行」 的數據庫具有以下SQL - 1列兩次在
TripParent
- 編號
- DrivingCompany
- 客戶端的不同值的SELECT語句
TripDetails
- 編號
- 目標
- PlannedArrivalDate
StatusLog
- 編號
- CatStatusId(從另一個表時逢用名)
- DateTimeModified
讓我解釋一下表格,首先我隱藏了另外一些字段以保持簡單,「Parent」表具有許多TripDetails,所以它只是它的許多「Details」的摘要。 TripDetails爲1個目的地列出其1行,假設行程從A到C,然後每個「停止」(A,B,C)有一行。 然後我們得到了每個「TripDetails」都有許多行的StatusLog表。
問題是,我需要一個返回DrivingCompany,Client,PlannedArrivalDate,RealArrivalDate和RealDepartureDate的存儲過程。
「真實日期」來自StatusLog表。狀態1表示卡車已經到達目的地(A/B/C),狀態2表示它已經離開了所述位置。
到目前爲止,我得到了以下
SELECT
TP.DrivingCompany, TP.Client, TD.PlannedArrivalDate,
'Real Arrival Date' = CASE SL.CatStatusId
WHEN 1 THEN SL.DateTimeModified
ELSE NULL
END,
'Real Departure Date' = CASE SL.CatStatusId
WHEN 2 THEN SL.DateTimeModified
ELSE NULL
END
FROM
TripParent TP
JOIN
TripDetails TD ON TD.TripParentId = TE.Id
JOIN
StatusLog SL ON SL.TripDetailsId = TD.Id
GROUP BY
TP.Id
ORDER BY
TD.Id
是表示用案例在SELECT語句顯示同一列兩次正確的方法是什麼?我認爲我在正確的軌道上,但我不能通過TP.Id分組,並且我還需要顯示所有行,通過此查詢,它不顯示「TripDetails」沒有「 StatusLog「行,因爲它們還沒有到達。
任何幫助表示讚賞
謝謝,即使沒有日誌,LEFT JOIN的確給了我行。關於GROUP子句,即使我將TP.Id放入SELECT中,也會出現此錯誤: **選擇列表中的列'TP.DrivingCompany'無效,因爲它不包含在聚合函數或GROUP BY子句。** 這是我的[DATA](https://i.redd.it/vnlkrhhqgf2z.png) 的一個示例應該在1中顯示最後2行以將實際到達日期和真實出發日期 – Martin
查看更改的答案。 – IngoB