CREATE proc yin_reset @a varchar(50),@b varchar(50)
as
begin
select  fbatchno 
       ,fcheckqty
       ,fitemname
       ,Fqcitemname
       ,sum(fitemsamplebadqty) as fitemsamplebadqty into #temp1
from view_goodsreturninspectionslip708
where fbatchno>='@a'and fbatchno<='@b'group by fbatchno,fcheckqty,fitemname,Fqcitemnamedrop table #temp1
declare @sql varchar(8000)
set @sql = 'sfbatchno as 客退单号
       ,fcheckqty as 检验数量
       ,fitemname as 成品型号 '
select @sql = @sql + ' , max(case Fqcitemname when ''' + Fqcitemname + ''' then fitemsamplebadqty else 0 end) [' + Fqcitemname + ']'
from (select distinct Fqcitemname from #temp1) as t
set @sql = @sql + ' from #temp1 group by fbatchno,fcheckqty,fitemname,Fqcitemname'
exec(@sql) 
drop table #temp1
endGO检查语法没错
执行的时候报错:
(所影响的行数为 0 行)服务器: 消息 156,级别 15,状态 1,行 1
在关键字 'as' 附近有语法错误。
不知道是什么问题?

解决方案 »

  1.   

    drop table #temp1 这句是多的,存储过程里面没有
      

  2.   

    1. 动态语句 exec 前,应先print @sql一下,自己debug
    2. 你的@sql 好像没有select 关键字??
      

  3.   

    set @sql = 'sfbatchno as 客退单号 
          ,fcheckqty as 检验数量 
          ,fitemname as 成品型号 ' ==>
    set @sql = 'select sfbatchno as 客退单号 
          ,fcheckqty as 检验数量 
          ,fitemname as 成品型号 ' 
      

  4.   

    set @sql = 'select sfbatchno as 客退单号 
          ,fcheckqty as 检验数量 
          ,fitemname as 成品型号 '