サブクエリを含む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のエントリの最後のバージョンを取得するために必要です。それを行うためのより良い方法があれば、私にも知らせてください。:-)
MS SQLには存在しないC#のSqlCommandに制限はありますか、それとも何か間違ったことをしていますか?
助けていただければ幸いです。