我得到了一个包含子查询的 Web 服务使用的查询。在 SQL Server Management Studio 中执行查询时,它工作正常。但是,在 web 服务中使用它作为SqlCommand
,我得到:
System.Data.SqlClient.SqlException:关键字“JOIN”附近的语法不正确。关键字“AS”附近的语法不正确。
插入额外的字符让我发现错误指的是子查询之后的位置。
查询如下:
SELECT H.H_ID AS ID, H.Name, TD.TDValue, A.A_ID, A_C.Value
FROM
H CROSS JOIN
A JOIN
(SELECT TD.A_ID, TD.H_ID, MAX(cast(TD.Version AS bigint)) AS Version FROM TD GROUP BY TD.A_ID, TD.H_ID) AS TData ON TData.H_ID = H.H_ID AND TData.A_ID = A.A_ID LEFT JOIN
TD2 ON TD2.H_ID = H.H_ID AND TD2.A_ID = A.A_ID AND TD2.Version = TData.Version LEFT JOIN
A_C ON A_C.A_ID = A.A_ID AND cast(A_C.R AS CHAR) = cast(TD.TDValue AS CHAR)
WHERE (H.Info = 1);
需要子查询来获取表 TD 条目的最后一个版本。如果有更好的方法可以做到这一点,请随时告诉我。:-)
C# 中的 SqlCommand 是否存在 MS SQL 中不存在的任何限制,或者我做错了什么?
我将非常感谢任何帮助!