我正在努力寻找SQL Server查询中的语法错误,该查询同时使用了这两种方法
   
    LEFT JOIN
   
   和
   
    OUTER APPLY
   
   .  声明的目的是为了得到下一个
   
    onhire
   
   船只的日期,并在结果中显示。
  
  
   我不确定是否可以打开更详细的错误消息,但我只得到以下信息
  
  
   
    Msg 102,Level 15,State 1,第27行“Charterer”附近语法不正确。
   
  
  
  
  SELECT
    po.[Id] AS [PositionId],
    ve.[Id] AS [VesselId],
    ve.[Name],
    fix1.[Date],
    fix1.[FirmUntil],
    ch1.[ChartererName] AS CurrentCharterer,
    fix2.[Date] AS NextOnHire,
    fix2.[FirmUntil] AS NextOffhire,
    ch2.ChartererName AS NextCharterer
From Position AS po
LEFT JOIN (
    SELECT [Date], 
        [FirmUntil], 
        [Charterer], 
        [VesselId] FROM Fixture
    ) AS fix1
OUTER APPLY (
    SELECT TOP 1 [Date], 
        [FirmUntil], 
        [Charterer] FROM Fixture AS f2
    WHERE fix1.[VesselId] = f2.[VesselId] 
        AND f2.[Date] > fix1.[FirmUntil] 
    ORDER BY f2.[Date] ASC
    ) AS fix2
LEFT JOIN Vessel AS ve ON ve.Id = fix1.VesselId
LEFT JOIN Charterer AS ch1 ON ch1.Id = fix1.Charterer
LEFT JOIN Charterer AS ch2 ON ch2.Id = fix2.Charterer
  
   起初我以为这可能是语句的顺序,但这似乎并没有改变任何东西。我看不到任何明显的东西,所以我希望能有另一双眼睛来检查。