请帮忙看一下,这个在ACCESS查询中可以正常执行的查询语句在SQL SERVER的查询中却提示异常,请帮忙看一下是什么原因

请帮忙看一下,这个在ACCESS查询中可以正常执行的查询语句在SQL SERVER的查询中却提示错误,请帮忙看一下是什么原因
SELECT sum(购买金额) as 合计金额  FROM
 ( 
  
       SELECT * FROM sdjl WHERE 用户编号 =  2  AND 票据单号 = 7 AND 操作类型 = '购买' AND 有效性 = '有效'   

     Union 

       SELECT * FROM sdjl b1 WHERE 用户编号 =  2  AND 票据单号 =  7  AND 操作类型 = '购买' AND 有效性 = '无效' 
         AND   修正次数 = 

          (
              SELECT MAX(修正次数) FROM sdjl b2 WHERE 用户编号 =  2  AND 票据单号 =  7
                  AND 操作类型 = '购买' AND 有效性 = '无效' AND b2.表序号 = b1.表序号
     )
)

这个语句在ACCESS中执行正常,但是在SQL SERVER2000中执行时却提示 最后的插号存在语法错误,请问如何处理。谢谢大家。 


------解决思路----------------------

with   t
as 
(
SELECT * FROM sdjl WHERE 用户编号 =  2  AND 票据单号 = 7 AND 操作类型 = '购买' AND 有效性 = '有效'   

     Union 

       SELECT * FROM sdjl b1 WHERE 用户编号 =  2  AND 票据单号 =  7  AND 操作类型 = '购买' AND 有效性 = '无效' 
         AND   修正次数 = 

          (
              SELECT MAX(修正次数) FROM sdjl b2 WHERE 用户编号 =  2  AND 票据单号 =  7
                  AND 操作类型 = '购买' AND 有效性 = '无效' AND b2.表序号 = b1.表序号
     )
)
SELECT sum(购买金额) as 合计金额  FROM t

------解决思路----------------------
最后的右括号后边加个空格,再随便打一个字符串,例如 abc  temp  resulttb 等等,所谓的别名,你懂得。
------解决思路----------------------
引用:
最后的右括号后边加个空格,再随便打一个字符串,例如 abc  temp  resulttb 等等,所谓的别名,你懂得。
请帮忙看一下,这个在ACCESS查询中可以正常执行的查询语句在SQL SERVER的查询中却提示异常,请帮忙看一下是什么原因
------解决思路----------------------
引用:
最后的右括号后边加个空格,再随便打一个字符串,例如 abc  temp  resulttb 等等,所谓的别名,你懂得。

连空格都不用也可以的~