当我在 SQL Fiddle 中运行此查询时,它运行完美:
;with cte as
(SELECT
analysisvalue.analysisid,
heatname,
analysistime,
sampletype,
grade,
productid,
element,
value
FROM
dbo.AnalysisValue
INNER JOIN
dbo.CAnalysis
ON
dbo.AnalysisValue.AnalysisID = dbo.CAnalysis.AnalysisID
WHERE
heatname = 'A7M0066'
)
SELECT
*
FROM
S_analysis s
CROSS JOIN (SELECT TOP 1 analysistime
FROM cte
ORDER BY analysisid desc
) c
WHERE s.heat_no = 'A7M0066' OR
(s.analysis_datetime BETWEEN c.analysistime AND DATEADD(hh, 2, c.analysistime ))
但是,当我在 SQL Server 2012 中运行它时,我收到带有前导分号的错误:
Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near ';'.
没有分号时出现此错误:
Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'with'.