用动态SQL来做吧
declare @Strsql varchar(8000)
select @strsql=''
select @strsql='select * from client where clientid in (select  clientid from sale where paystate='已付' and meettime>=@firdate and meettime<=@secdate and dogid in (select dogid from dog where '+@Fieldname+'=1) )'
exec (strsql)

解决方案 »

  1.   

    exec('select * from client where clientid in (select  clientid from sale where paystate='已付' and meettime>=@firdate and meettime<=@secdate and dogid in (select dogid from dog where '+@fieldname+'=1')
      

  2.   

    用动态也试过。这样了,出现同样的问题。
    SELECT @SQLTXT="SELECT * FROM CLIENT WHERE CLIENTID "
    SELECT @SQLTXT =@SQLTXT+" in (select  clientid from sale where paystate='已付' and meettime>="+QUOTENAME(CONVERT(VARCHAR(20),@FIRDATE,120),'''')+" and meettime<="+QUOTENAME(CONVERT(VARCHAR(20),@SECDATE,120),'''')+ "  and dogid in (select dogid from dog where"+QUOTENAME( @fieldname,'''')+"=1) )"
    exec(@SQLTXT)
      

  3.   

    换成这样子就不会出错了。 SELECT @SQLTXT=" select client.* from client join sale on client.clientid=sale.clientid "+
    " join dog on sale.dogid=dog.dogid where sale.paystate='已付' and dog."+@fieldname+"=1 and sale.meettime>="+
    QUOTENAME(CONVERT(VARCHAR(20),@FIRDATE,120),'''')+
    " and sale.meettime<="+QUOTENAME(CONVERT(VARCHAR(20),@SECDATE,120),'''')给份吧