有一张表 
字段:id(自动编号) 
      bigclassname(大类名称) 
      smallclassname(小类名称) 
      zhuanti(专题) eg:  id(1,新闻,国内新闻,科技) 
      id(2,新闻,国内新闻,汽车) 其中有2条记录1,2他们共同的小类是相同的,只是专题不同,如何做到以下格式输出! 
      
--------------------------------------------------------------- 
   小类                 专题1                      专题2  国内新闻                科技  (记录1)              汽车(记录2) 
----------------------------------------------------------------- 
象这种效果:http://www.ucf5.com/gameclass.asp?fenquid=490&gameid=1     

解决方案 »

  1.   

    select * from t order by bigclassname(大类名称)  
          smallclassname, 
          zhuanti 
      

  2.   

    if object_id('tb') is not null
       drop table tb
    go
    create table tb(id int,bigclassname varchar(10),smallclassname varchar(10),zhuanti varchar(10))
    insert into tb values(1,'新闻','国内新闻','科技') 
    insert into tb values(2,'新闻','国内新闻','汽车') select a.小类,a.专题1,a.专题2 from
    (
    select bigclassname,smallclassname as 小类,max(case when zhuanti='科技' then '科技  (记录1)' end) as 专题1,
                                max(case when zhuanti='汽车' then '汽车  (记录2)' end) as 专题2      
    from tb 
    group by bigclassname,smallclassname
    ) a 
    --
    try
      

  3.   

    if object_id('tb') is not null
       drop table tb
    if object_id('usp_get') is not null
       drop proc usp_get
    go
    create table tb(id int,bigclassname varchar(10),smallclassname varchar(10),zhuanti varchar(10))
    insert into tb values(1,'新闻','国内新闻','科技') 
    insert into tb values(2,'新闻','国内新闻','汽车') 
    insert into tb values(3,'新闻','山东新闻','财经')
    insert into tb values(4,'体育','国内体育','篮球') go
    -- usp_get '新闻','国内新闻'
    create proc usp_get
    (@bigclassname varchar(10),@smallclassname varchar(10))
    as
    begin
        select a.zhuanti,identity(int,1,1) as id into # from 
        (select distinct zhuanti from tb where bigclassname=@bigclassname and smallclassname=@smallclassname) a
    declare @sql varchar(8000)
    set @sql='select bigclassname,smallclassname as 小类,'
    select @sql=@sql+' max(case when zhuanti='''+a.zhuanti+''' then '''+a.zhuanti+'(记录'+cast(a.id as varchar(10))+')'' end) as 专题'+cast(a.id as varchar(10))+','
    from 
    (
       select id,zhuanti from #
    ) a 
    set @sql=substring(@sql,1,len(@sql)-1)
        set @sql=@sql+' from tb group by bigclassname,smallclassname'
        set @sql=@sql+' having bigclassname='''+@bigclassname+''' and smallclassname='''+@smallclassname+''''
    exec(@sql)
        drop table #
    end
    --
    楼主看这个
    我感觉这样才是正常的操作,你是在知道大类名和小雷鸣的情况下去找所有不同的专题的
    执行他usp_get '新闻','国内新闻',看看效果