簡體   English   中英

連接SQL查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM