CHR*_*LLE -1 c# sql sql-server syntax-error
我在我的代码中使用以下语句得到语法错误,我已经通过它,除非我错过了一些东西,否则我看不出任何错误:
错误是
关键字RIGHT附近的语法错误"
("SELECT D1.DR, D1.CR, D1.ASSET_NO, (Coalesce(addit_ytd,0) + DR - CR) AS ADDIT_YTD"
+"FROM (SELECT coalesce (sum(dr_amount),0) AS DR, coalesce (sum(cr_amount),0) AS CR , asset.asset_no"
+"FROM posting RIGHT JOIN asset ON asset.asset_no = posting.asset_no, sysasset"
+"WHERE asset.asset_no = @AssetNumber"
+"AND (period <= posting.period) AND (period >= sysasset.asset_open_per)"
+ "GROUP BY asset.asset_no) AS D1 INNER JOIN dbo.asset ON D1.asset_no= asset.asset_no", DataAccess.AssetConnection);
Run Code Online (Sandbox Code Playgroud)
正如其他人所说,你缺少空白.考虑重写代码以使用C#的逐字文字字符串语法,并在其中添加一些缩进以更好地指示查询的结构:
(@"SELECT D1.DR, D1.CR, D1.ASSET_NO, (Coalesce(addit_ytd,0) + DR - CR) AS ADDIT_YTD
FROM
(SELECT coalesce (sum(dr_amount),0) AS DR, coalesce (sum(cr_amount),0) AS CR , asset.asset_no
FROM posting RIGHT JOIN asset ON asset.asset_no = posting.asset_no, sysasset
WHERE asset.asset_no = @AssetNumber
AND (period <= posting.period) AND (period >= sysasset.asset_open_per)
GROUP BY asset.asset_no)
AS D1 INNER JOIN dbo.asset ON D1.asset_no= asset.asset_no",
DataAccess.AssetConnection);
Run Code Online (Sandbox Code Playgroud)
请注意,@符号表示"直接从源代码中取出字符串".源代码中的所有空格都成为字符串中的空格.