declare @nvsql varchar(100)
set @nvsql='select id '
set @nvsql=@nvsql+' name,parent, isnull(convert(varchar(10),time1,120),0)  as time ,depth from t'
exec (@nvsql)
print @nvsql
參考。

解决方案 »

  1.   

    上面select @sql =@sql+ ',''正式:'' + cast( isnull(sum(case when b.id=' + cast
    這裡應該就錯了
      

  2.   

    如果这样就不出错!
    create PROCEDURE proGetXS
    AS
    SET NOCOUNT ON 
    declare @sql varchar(8000) 
    set @sql = 'select a.规格' 
    select @sql =@sql+ ',''正式:'' + cast( isnull(sum(case when b.id=' + cast(c.id as varchar) + ' then 系数 end),'') as varchar)  ['+ c.工序  + ']' 
    from (select id,工序 from 工序表  ) as c  
    select @sql = @sql+' from 规格表 a
    left join  系数表 b on a.id=b.规格id   
    group by a.id,a.规格' 
    --exec(@sql)
    select @sql
    去掉 +''返工:'' + +cast(isnull(sum(case when b.id=' + cast(c.id as varchar) + ' then 返工系数 end),'') as varchar)这个后就不出错!
      

  3.   

    这个过程原来是这样子的,运行没有问题:
    create PROCEDURE proGetXS
    AS
    SET NOCOUNT ON 
    declare @sql varchar(8000) 
    set @sql = 'select a.规格' 
    select @sql =@sql+ ',isnull(sum(case when b.id=' + cast(c.id as varchar) + ' then 系数 end),'')   ['+ c.工序  + ']' 
    from (select id,工序 from 工序表  ) as c  
    select @sql = @sql+' from 规格表 a
    left join  系数表 b on a.id=b.规格id   
    group by a.id,a.规格' 
    exec(@sql)
      

  4.   

    try:
    -------------------------------------------------------------------------------
    create PROCEDURE proGetXS
    AS
    SET NOCOUNT ON 
    declare @sql varchar(8000) 
    set @sql = 'select a.规格' 
    select 
        @sql = @sql+ 
               ',''正式:''+cast(isnull(sum(case when b.id='+cast(c.id as varchar)+' then 系数     end),'''') as varchar) 
                +''返工:''+cast(isnull(sum(case when b.id='+cast(c.id as varchar)+' then 返工系数 end),'''') as varchar) ['+ c.工序 + ']' 
    from 
        (select id,工序 from 工序表) c
      
    select @sql = @sql+' from 规格表 a left join  系数表 b on a.id=b.规格id group by a.id,a.规格' 
    exec(@sql)
    GO