date = date.Date;
var query = [email protected]" SELECT t.Name AS 'Department or Division',c.RegistrationNumber AS 'Vehicle Registration Number'
,v.Model + ' ' + v.Variant AS 'Model/ Vehicle Description',c.ChasisNumber AS 'VIN/ Chassis Number'
,c.FirstRegistrationDate AS 'First Registration Date',Od.Reading AS 'Odometer Reading'
,Od.ReadingDate AS 'Odometer Reading Date',Vc.Description as 'Vehicle Category'
FROM clientproductvehicles c JOIN Clients t
ON c.TargetClientId=t.ClientId JOIN Vehicles v
ON c.vehicleid=v.vehicleid JOIN VehicleCategories Vc
ON C.VehicleCategoryId=Vc.VehicleCategoryId LEFT JOIN OdometerReadings Od
ON C.Clientproductvehicleid=Od.ClientProductVehicleId
WHERE c.ClientId={clientId}
AND c.ProductId={productId}
AND (c.LastOdometerReading BETWEEN 14000 AND 20000 or c.LastOdometerReading BETWEEN 29000 AND 35000)
AND (convert(varchar(10), Od.ReadingDate,103) = convert(varchar(10), {date},103))
AND (C.VehicleCategoryId = 1)
AND c.ClientProductVehicleId
NOT IN
(SELECT I.ClientProductVehicleId
FROM Incidents i
JOIN IncidentStates iSt
ON i.IncidentId = iSt.IncidentId
WHERE (i.CategoryId = 4 or i.Description LIKE '%km%')
AND IncidentStatusId = 1)
ORDER BY 'Odometer Reading Date' DESC";
List<ClientProductVehicle> vehicleServiceDue = _moiFleetContext.Db.SqlQuery<ClientProductVehicle>(query).ToList();
私はこれらの範囲の間に走行距離計があり、それがIncidents
ではないすべての車両のリストを取得しようとしています。System.Data.SqlClient.SqlException: '' 00 'で構文が正しくありません。'
私はそのエラーを受け取り続けます。なぜなら、私がSQLServer上でクエリを実行すると、どこからうまくいかなかったのか分かりません。
ストアドプロシージャーが長すぎます。 –
@ un-lucky誰が気にしますか?それがどのように問題を解決するのでしょうか? –
問題を再現するために必要な最小限のクエリが得られるまで、クエリを行単位で絞り込みます。これはあまりにも大変です。 –