名称   重量
棉三吸 70
棉三吸 68
棉三吸 76
棉三吸 88
棉风花 75
棉风花 80
棉风花 76
破籽 48
破籽 50
破籽 50
扫地花 76
扫地花 62
回丝 77显示结果为:
棉三吸 棉风花 破籽  扫地花 回丝
  70    75     48     76    77
  68    80     50     62
  76    76     50
  88那个名称是动态变化的,不确定它有几个
请各位帮帮忙啊!!!

解决方案 »

  1.   

    create table tb(名称 varchar(10),重量 int)
    insert into tb values('棉三吸', 70)
    insert into tb values('棉三吸', 68)
    insert into tb values('棉三吸', 76)
    insert into tb values('棉三吸', 88)
    insert into tb values('棉风花', 75)
    insert into tb values('棉风花', 80)
    insert into tb values('棉风花', 76)
    insert into tb values('破籽'  , 48)
    insert into tb values('破籽'  , 50)
    insert into tb values('破籽'  , 50)
    insert into tb values('扫地花', 76)
    insert into tb values('扫地花', 62)
    insert into tb values('回丝'  , 77)
    godeclare @sql varchar(8000)
    set @sql = ''
    select @sql = @sql + ',max(case 名称 when ''' + 名称 + ''' then ltrim(重量) else '''' end) [' + 名称 + ']'
    from (select distinct 名称 from tb m) as a
    set @sql = 'select ' + substring(@sql,2,len(@sql)) + ' from (select id = 1 , t.* ,px = (select count(1) from tb where 名称 = t.名称 and 重量 < t.重量) + 1 from tb t) m group by px'
    exec(@sql) drop table tb/*
    回丝           棉风花          棉三吸          破籽           扫地花          
    ------------ ------------ ------------ ------------ ------------ 
    77           75           68           48           62
                 76           70           50           76
                 80           76                        
                              88                        */