我正在努力寻找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
起初我以为这可能是语句的顺序,但这似乎并没有改变任何东西。我看不到任何明显的东西,所以我希望能有另一双眼睛来检查。