declare @s varchar(1000)
select @s='select addressid as 序号,address as 地区'
select @s=@s+',SUM(case when subject='''+subject+''' then 1 else 0 end )as '''+subject+'''' from gw_enter  
group by subject select @s=@s+' 
from (gw_enter inner join gw_address on address=addressname)
where condition is null group by address,addressid'
exec (@s)
---------------------------------------------------------上面语句正常运行.无异常.
但是加上搜索条件以后,出错.
where condition is null and pici=200712 group by address,addressid'
exec (@s)
--------------------
服务器: 消息 170,级别 15,状态 1,行 3
第 3 行: ',' 附近有语法错误。
---------------------
错误莫名其妙.理论上来说加这么一个条件应该是完全不影响的吧.求高手指点.

解决方案 »

  1.   

    如果pici是字符串型,改为:
    where condition is null and pici=' + ''200712'' + ' group by address,addressid' 
      

  2.   

    2个表没有重名的,不过指定别名后.依然出错.
    ----------------
    declare @s varchar(1000)
    select @s='select b.addressid as 序号,a.address as 地区'
    select @s=@s+',SUM(case when subject='''+subject+''' then 1 else 0 end )as '''+subject+'''' from gw_enter  
    group by subject select @s=@s+' 
    from (gw_enter a inner join gw_address b on a.address=b.addressname)
    where a.condition is null and a.pici=200712 group by a.address,b.addressid'
    exec (@s)
    ------------------------------
    服务器: 消息 170,级别 15,状态 1,行 3
    第 3 行: 'g' 附近有语法错误。
    ---------------------
      

  3.   

    哎~
    我就算是加个and 1=1 还是出错.
      

  4.   

    把@s  print 出来检查
      

  5.   

    这里是declare @s varchar(1000) 
    1000太短.
    当运行过程中.
    每一次执行时,语句加长.
    超过1000.
    所以.
    修改成declare @s varchar(8000)
    就可以了./
    感谢LS