當CTE前的有語句時需要用;分隔

解决方案 »

  1.   

    出什么错误提示呢?别的服务器是2005吗?另外,在WITH t as 前面加上 ; 试下。
      

  2.   

    你这是2005的cte吧,必须是2005的数据库吧,在看一下别的数据库的兼容
      

  3.   

    报的错误是Msg 319, Level 15, State 1, Line 21
    Incorrect syntax near the keyword 'with'. If this statement is a common table expression or an xmlnamespaces clause, the previous statement must be terminated with a semicolon.
      

  4.   

    WITH t AS 
       ( select *  from   (SELECT ROW_NUMBER() OVER (ORDER BY EndDate DESC) as NewRowIndex,DateIndex FROM @tbDate ) a)
          UPDATE t SET DateIndex = NewRowIndex-1 
      

  5.   

    联机帮助上的原话:
    如果将 CTE 用在属于批处理的一部分的语句中,那么在它之前的语句必须以分号结尾。
      

  6.   

    没那么神奇吧?
    多半是楼主弄错了, 联机帮助上明确写了的
    可比较一下 @@VERSION 的结果, 不太可能是设置问题
      

  7.   


    现在就是这样的。之前出过几次这样的问题,我的SQL语句能用,发到美国去就报错。
      

  8.   

    不清楚,总之我的机器上也是报错的。应该是规范问题,我想SELECT * FROM ONETABLE 在哪都不会错,因为它是比较规范的。