declare @sql varchar(8000)
set @sql=''
select @sql=@sql+',['+rtrim(Description)+']=sum(case Descriptionwhen '''+rtrim(Description)+''' then 1 else 0 end)'
from v_Table group by Description
--然后,查询
select @sql='Select Name,' + 
@sql + 
' From v_Table '+
' Group By Name'
-- ok query data by execute the sql command
Exec (@sql);

解决方案 »

  1.   

    declare @s varchar(8000)
    set @s = ''
    select @s = @s + ',['+Description+']=sum(case Description when '''+Description+''' then Value end)' from v_Table group by Description
    set @s = 'select Name'+@s+' from v_Table group by Name'
    exec(@s)
      

  2.   

    楼主的语句改一点点就可以的。
    --行数据转换成列名
    declare @sql varchar(8000)
    set @sql=''
    select @sql=@sql+',['+rtrim(Description)+']=sum(case Description when '''+rtrim(Description)+''' then Value else 0 end)' --Value改为1即,Description when之间要分开
    from v_Table group by Description
    --然后,查询
    select @sql='Select Name' +  --,号去掉。
    @sql + 
    ' From v_Table '+
    ' Group By Name'
    -- ok query data by execute the sql command
    Exec (@sql);
    -- ok
      

  3.   

    --建立测试环境
    Create Table v_Table
    (Name Nvarchar(20),
     Description Nvarchar(200),
     Value Int)
    --插入数据
    Insert v_Table Values('Jear', N'到厂迟到1-3小时', 5)
    Insert v_Table Values('Jear', N'空柜检查',         7)
    Insert v_Table Values('Jear', N'及时返回柜号', 10)
    Insert v_Table Values('Jear',   N'空柜检查',         3)
    Insert v_Table Values(N'陈师傅',N'到厂迟到1-3小时', 5)
    Insert v_Table Values(N'陈师傅',N'及时准确到达', 9)
    Insert v_Table Values(N'古月历',N'到厂迟到1-3小时', 2)
    Insert v_Table Values(N'古月历',N'到达码头',         5)
    --测试
    Declare @sql Nvarchar(4000)
    Set @sql=''
    Select @sql=@sql+',['+Rtrim(Description)+']=sum(case Description when N'''+Rtrim(Description)+''' then 1 Else 0 end)'
    from v_Table group by Description
    Select @sql='Select Name' + @sql + ' From v_Table  Group By Name'
    Exec (@sql);
    --删除测试环境
    Drop Table v_Table
    --结果
    /*
    Name 到厂迟到1-3小时 到达码头 及时准确到达 及时返回柜号 空柜检查
    Jear 1 0 0 1 2
    古月历 1 1 0 0 0
    陈师傅 1 0 1 0 0
    */
      

  4.   

    then value改为then 1即可