错误:关键字附近的语法不正确

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)

Eri*_*ert 7

正如其他人所说,你缺少空白.考虑重写代码以使用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)

请注意,@符号表示"直接从源代码中取出字符串".源代码中的所有空格都成为字符串中的空格.