我简化下数据吧         ID                         TagName           ValueName   
         1                          IC语言             English 
         1                          特殊商品             保护 
         1                          服装                 戏服  
         2                          IC语言               china 
         2                          特殊商品             其他    
         2                          灯光                 红色    得到下面这个结果
         列名                1                  2
         IC语言             English            china 
         特殊商品           保护               其他
         服装                戏服               null
         灯光                null              红色

解决方案 »

  1.   

    ----------------------------------------------------------------
    -- Author  :DBA_HuangZJ(发粪涂墙)
    -- Date    :2014-04-29 15:58:50
    -- Version:
    --      Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) 
    -- Apr  2 2010 15:48:46 
    -- Copyright (c) Microsoft Corporation
    -- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
    --
    ----------------------------------------------------------------
    --> 测试数据[huang]
    if object_id('[huang]') is not null drop table [huang]
    go 
    create table [huang]([BigGoodsAUID] int,[LabName] nvarchar(8),[LabCode] nvarchar(10))
    insert [huang]
    select 4450880,N'产地区域',N'澄海' union all
    select 4450880,N'IC语言',N'不分语种' union all
    select 4450880,N'材质',null union all
    select 4450880,N'包装语言',null union all
    select 4450880,N'是否时货',null union all
    select 4450880,N'特殊商品',null union all
    select 4450880,N'适用年龄',null union all
    select 4450880,N'灯光',N'带灯光' union all
    select 4450880,N'声音',N'带声音' union all
    select 4450880,N'尺寸',N'小型' union all
    select 26430520,N'是否时货',N'非时货' union all
    select 26430520,N'产地区域',N'澄海' union all
    select 26430520,N'包装语言',N'英文包装' union all
    select 26430520,N'IC语言',N'无IC' union all
    select 26430520,N'特殊商品',N'非特殊商品' union all
    select 26430520,N'适用年龄',N'3岁+' union all
    select 26430520,N'材质',N'塑料' union all
    select 26430520,N'灯光',N'不带灯光' union all
    select 26430520,N'声音',N'不带声音' union all
    select 28718938,N'IC语言',N'其它' union all
    select 28718938,N'材质',N'EVA' union all
    select 28718938,N'产地区域',N'澄海' union all
    select 28718938,N'特殊商品',N'版权商品' union all
    select 28718938,N'适用年龄',N'0-6个月' union all
    select 28718938,N'是否时货',N'非时货' union all
    select 28718938,N'包装语言',N'其它' union all
    select 28718938,N'灯光',N'不带灯光' union all
    select 28718938,N'声音',N'带声音' union all
    select 28718938,N'尺寸',N'大型'
    --------------生成数据--------------------------
    declare @s nvarchar(4000)
    set @s=''
    Select     @s=@s+','+quotename([BigGoodsAUID])+N'=max(case when [BigGoodsAUID]=N'+quotename(BigGoodsAUID,'''')+N' then [LabCode] else NULL end)'
    from [huang] group by [BigGoodsAUID]
    --SET @S=subSTRING(@S,2,LEN(@S))
    exec('select [LabName]'+@s+' from [huang] GROUP BY [LabName]')
    ----------------结果----------------------------
    /* 
    LabName  4450880    26430520   28718938
    -------- ---------- ---------- ----------
    IC语言     不分语种       无IC        其它
    产地区域     澄海         澄海         澄海
    包装语言     NULL       英文包装       其它
    声音       带声音        不带声音       带声音
    尺寸       小型         NULL       大型
    是否时货     NULL       非时货        非时货
    材质       NULL       塑料         EVA
    灯光       带灯光        不带灯光       不带灯光
    特殊商品     NULL       非特殊商品      版权商品
    适用年龄     NULL       3岁+        0-6个月
    */
      

  2.   

     if object_id('tempdb..#a') is not null drop table #a
    create table #a
    (
       BigGoodsAUID varchar(10),
       LabName     varchar(50) ,
      LabCode varchar(50)
    )
    insert into #a
    select '4450880','产地区域','澄海' union all
    select '4450880','IC语言','不分语种' union all
    select '4450880 ',' 材质',NULL union all
    select '4450880','包装语言' ,NULL union all
    select '4450880','是否时货',NULL union all
    select '4450880','特殊商品',NULL union all
    select '4450880','灯光','带灯光' union all
    select '4450880 ','声音','带声音' union all
    select '4450880 ','尺寸','小型'--select * from #a
     
    declare @s nvarchar(4000)
    Select     @s=isnull(@s+',','')+quotename(BigGoodsAUID) from #a group by BigGoodsAUID
    declare @sql varchar(200)
    set @sql='select * from #a pivot (max(LabCode) for BigGoodsAUID in('+@s+'))b'
    exec(@sql)
    /*
    LabName                                            4450880                                            4450880
    -------------------------------------------------- -------------------------------------------------- --------------------------------------------------
     材质                                                NULL                                               NULL
    IC语言                                               不分语种                                               NULL
    包装语言                                               NULL                                               NULL
    产地区域                                               澄海                                                 NULL
    尺寸                                                 NULL                                               小型
    灯光                                                 带灯光                                                NULL
    声音                                                 NULL                                               带声音
    是否时货                                               NULL                                               NULL
    特殊商品                                               NULL                                               NULL
    */
      

  3.   


    create table xy
    (ID int,TagName varchar(10),ValueName varchar(10))insert into xy
     select 1,'IC语言','English' union all
     select 1,'特殊商品','保护' union all
     select 1,'服装','戏服' union all
     select 2,'IC语言','china' union all
     select 2,'特殊商品','其他' union all
     select 2,'灯光','红色'
    select a.TagName,
           max(case when TagName=a.TagName and ID=1 then ValueName else null end) '1',
           max(case when TagName=a.TagName and ID=2 then ValueName else null end) '2'
     from xy a
     group by a.TagName/*
    TagName    1          2
    ---------- ---------- ----------
    IC语言       English    china
    灯光         NULL       红色
    服装         戏服         NULL
    特殊商品     保护         其他(4 row(s) affected)
    */
      

  4.   

    IF OBJECT_ID('Test') IS NOT NULL 
        DROP TABLE Test
     go
     CREATE TABLE Test
        (
          ID INT ,
          TagName VARCHAR(50) ,
          ValueName VARCHAR(50)
        )
    INSERT  INTO Test
            SELECT  '1' ,
                    'IC语言' ,
                    'English'
            UNION ALL
            SELECT  '1' ,
                    '特殊商品' ,
                    '保护'
            UNION ALL
            SELECT  '1' ,
                    '服装' ,
                    '戏服'
            UNION ALL
            SELECT  '2' ,
                    'IC语言' ,
                    'china'
            UNION ALL
            SELECT  '2' ,
                    '特殊商品' ,
                    '其他'
            UNION ALL
            SELECT  '2' ,
                    '灯光' ,
                    '红色'
     GO
    --------------------------------------------------查询(静态)--------------------------------------------------
     
    SELECT TagName ,
      MAX(CASE ID WHEN 1 THEN  ValueName ELSE NULL
      END) [1],MAX(CASE ID WHEN 2 THEN  ValueName   ELSE  NULL
      END) [2]  FROM dbo.test GROUP BY TagName 
      
    --------------------------------------------------查询(动态)--------------------------------------------------
    DECLARE @sql VARCHAR(8000)
    SET @sql = 'select TagName'
    SELECT  @sql = @sql + ',max(case ID when ' + CONVERT(VARCHAR, ID)
            + ' then ValueName end) [' + CONVERT(VARCHAR, ID) + ']'
    FROM    (SELECT DISTINCT ID FROM      test) AS a
    SELECT  @sql = @sql + ' from test group by TagName'EXEC(@sql)
      
    /*
      TagName                                            1                                                  2
    -------------------------------------------------- -------------------------------------------------- --------------------------------------------------
    IC语言                                               English                                            china
    灯光                                                 NULL                                               红色
    服装                                                 戏服                                                 NULL
    特殊商品                                               保护                                                 其他(4 行受影响)
    */
      

  5.   


    create table xy
    (ID int,TagName varchar(10),ValueName varchar(10))
     
    insert into xy
     select 1,'IC语言','English' union all
     select 1,'特殊商品','保护' union all
     select 1,'服装','戏服' union all
     select 2,'IC语言','china' union all
     select 2,'特殊商品','其他' union all
     select 2,'灯光','红色'
     declare @tsql varchar(6000)select @tsql=isnull(@tsql+',','')
                +'max(case when TagName=a.TagName and ID='+rtrim(ID)+' then ValueName else null end) '''+rtrim(ID)+''' '
     from (select distinct ID from xy) tselect @tsql='select a.TagName,'+@tsql
                +' from xy a
                   group by a.TagName'exec(@tsql)
     
    /*
    TagName    1          2
    ---------- ---------- ----------
    IC语言       English    china
    灯光         NULL       红色
    服装         戏服         NULL
    特殊商品     保护         其他(4 row(s) affected)
    */