我是新來的SQL查詢,我需要做一個加入該查詢開始:SQL選擇其中的日期爲最小和最大
SELECT b.Name AS VehicleName,
a.*
FROM VehicleDay AS a
INNER JOIN
Vehicles AS b
ON a.VehicleId = b.Id
WHERE b.SiteId = 100
AND a.Day >= '2016-04-22'
AND a.Day < '2016-04-28';
,並從信息數據表中添加6列:
開始(當日第一個值)&結束 (當天最後一個) - 累積[CML] - 電流容量[帽] - 總費用[CHRG]
所以我需要在添加上最右邊 S Cml | E Cml | S Cap | E Cap | S Chrg | E Chrg
在Info表中,我得到了同一VehicleId在不同時間段的值,我需要爲日期範圍內的每一天選擇第一個和最後一個數據。
到目前爲止,我的查詢看起來是這樣的:
SELECT b.Name AS VehicleName,
a.*,
c.MaxDay,
c.Cumulative,
c.CurrentCapacity,
c.TotalCharge
FROM VehicleDay AS a
INNER JOIN
Vehicles AS b
ON a.VehicleId = b.Id
INNER JOIN
(SELECT VehicleId,
MAX(TimestampLocal) AS MaxDay,
CAST (TimestampLocal AS DATE) AS Day,
Cumulative,
CurrentCapacity,
TotalCharge
FROM Info
GROUP BY VehicleId,
CAST (TimestampLocal AS DATE),
Cumulative, CurrentCapacity, TotalCharge) AS c
ON a.VehicleId = c.VehicleId
AND a.Day = c.Day
WHERE b.SiteId = 100
AND a.Day >= '2016-04-22'
AND a.Day < '2016-04-28';
但是第二個查詢返回的第一個和我需要顯示的行數作爲第一個多行。
有沒有一種方法可以將這6列添加到我的查詢中,而無需添加更多行?
來自'VehicleDay'和'Vehicles'表的數據是否在其他行中重複出現? – Invictus
編號車輛表僅包含Id和名稱,並且Id是VehicleDay的外鍵,包含每天加載的信息 – Dana
我指的是在您提到的第二個查詢中看到的「其他行」。換句話說,是否有任何一對行的「VehicleId」和「Day」條目具有匹配的值? – Invictus