代码之家  ›  专栏  ›  技术社区  ›  Yanayaya

我的SQL语句中使用外部Apply和Left联接的语法错误在哪里?

  •  0
  • Yanayaya  · 技术社区  · 4 年前

    我正在努力寻找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
    

    起初我以为这可能是语句的顺序,但这似乎并没有改变任何东西。我看不到任何明显的东西,所以我希望能有另一双眼睛来检查。

    0 回复  |  直到 4 年前