declare @sql varchar(8000)
set @sql=''  --初始化变量@sql
select @sql=@sql+','+课程 from tb group by 课程 --变量多值赋值
set @sql=stuff(@sql,1,1,'')--去掉首个','
set @sql='select * from tb pivot (max(分数) for 课程 in ('+@sql+'))a'
print (@sql)
請問 select @sql=@sql+','+kc from tb group by kc中
爲什麽不加入@sql就是單值賦值,請哥哥姐姐幫忙解釋一下

解决方案 »

  1.   

    請問 select @sql=@sql+','+课程 from tb group by 课程
    爲什麽不加入第二个@sql就是單值賦值,請哥哥姐姐幫忙解釋一下
      

  2.   

    declare @sql varchar(8000)
    set @sql=''  --初始化变量@sql
    select @sql=@sql+','+课程 from tb group by 课程 --变量多值赋值
    set @sql=stuff(@sql,1,1,'')--去掉首个','
    set @sql='select * from tb pivot (max(分数) for 课程 in ('+@sql+'))a'
    print (@sql) @sql是变量  每次都去掉',' 其实是一个递归的过程
      

  3.   

    还是建议你print @sql,啥都明白了.
      

  4.   

    print(@sql)还是不明白啊,想找给高手给我解释下啊
      

  5.   

    請問 select @sql=@sql+','+kc from tb group by kc中
    爲什麽不加入@sql就是單值賦值,請哥哥姐姐幫忙解釋一下这和下面的代码是一个道理:
    int sum=0;
    for(int i=0;i<10;i++)
    {
      sum=sum+i;
    }