[英]Joining sql queries
您可以幫忙這兩個查詢嗎?
查詢一:
declare @startdate datetime
declare @enddate datetime
set @datainicio='2014-03-01'
set @datafim='2014-03-03'
select right([Location Code],4) as Vehicle,MIN(CAST(CAST([date]AS DATE) AS DATETIME) +
CAST([entry time]AS TIME)) as DaeaMin,min([Veihicle Kms]) as KmsMin,MAX(CAST(CAST([date]AS DATE) AS DATETIME) +
CAST([entry time]AS TIME)) as DateMax,max([Veihicle Kms])as KmsMax
where quantity>=0 and [Location code] like 'v%' and [item no_]='601.0001' and ([date] between @startdate and @enddate)
group by [Location Code]
查詢二:
SELECT Vehicles.Designation as Vehicle,
SUM(Locations.DistanceFromLastLocation)/1000 as
KMS,convert(varchar(10),LocationDate,120) as Date
FROM Locations INNER JOIN Vehicles ON Locations.VehicleId = Vehicles.VehicleId
GROUP BY Vehicles.Designation,LocationDate
我想通過車輛加入這兩個查詢,查詢二中的日期必須在查詢一的datemin和datemax之間。
請幫助,謝謝。
由於您在第一個查詢中沒有提到from子句,因此我假設對於第一個查詢,您正在從“位置”表中獲取數據。 以下答案可能有用。
;with temp as
(
SELECT Vehicles.Designation as Vehicle,
sum(Locations.DistanceFromLastLocation)/1000 as KMS,
convert(varchar(10),Locations.LocationDate,120) as Date
FROM Locations
INNER JOIN Vehicles
ON Locations.VehicleId = Vehicles.VehicleId
group by Vehicles.Designation,Locations.LocationDate
)
select right(Locations.[Location Code],4) as Vehicle,
MIN(CAST(CAST([Locations.date]AS DATE) AS DATETIME) + CAST([Locations.entry time]AS TIME))
as DateaMin,
min([Locations.Veihicle Kms]) as KmsMin,
MAX(CAST(CAST([Locations.date]AS DATE) AS DATETIME) + CAST([Locations.entry time]AS TIME))
as DateMax,
max([Locations.Veihicle Kms])as KmsMax
FROM Locations
Inner Join temp on
temp.Vehicle = right([Locations.Location Code],4)
where Locations.quantity>=0
and [Locations.Location code] like 'v%'
and [Locations.item no_]='601.0001'
and ([Locations.date] between @startdate and @enddate)
and temp.[Date] between
MIN(CAST(CAST([Locations.date]AS DATE) AS DATETIME) + CAST([Locations.entry time]AS TIME))
and
MAX(CAST(CAST([Locations.date]AS DATE) AS DATETIME) + CAST([Locations.entry time]AS TIME))
希望這會有所幫助,並且比其他答案更容易理解。 請注意,我已包含拼寫錯誤;)
declare @startdate datetime
declare @enddate datetime
set @datainicio='2014-03-01'
set @datafim='2014-03-03'
SELECT *
FROM (
select right([Location Code],4) as Vehicle,MIN(CAST(CAST([date]AS DATE) AS DATETIME) +
CAST([entry time]AS TIME)) as DaeaMin,min([Veihicle Kms]) as KmsMin,MAX(CAST(CAST([date]AS DATE) AS DATETIME) +
CAST([entry time]AS TIME)) as DateMax,max([Veihicle Kms])as KmsMax
FROM YOURTABLE
where quantity>=0 and [Location code] like 'v%' and [item no_]='601.0001' and ([date] between @startdate and @enddate)
group by [Location Code]
) x
INNER JOIN (
SELECT Vehicles.Designation as Vehicle,
SUM(Locations.DistanceFromLastLocation)/1000 as
KMS,convert(varchar(10),LocationDate,120) as Date
FROM Locations INNER JOIN Vehicles ON Locations.VehicleId = Vehicles.VehicleId
GROUP BY Vehicles.Designation,LocationDate
) y
ON x.Vehicle = y.Vehicle
AND y.DATE BETWEEN x.DaeaMin AND x.DateMax
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.