提问帖子数   回复帖子数   所在地区   所在行业3              4             山东      机械6               5            海南      冶金5               8            北京       教育
如何生成以下的表格啊   
 
                  山东      
  
机械     提问帖总数/回答帖子总数
各位大侠帮忙看看怎么做好啊

解决方案 »

  1.   

    ---------------------------------
    --  Author: HEROWANG(让你望见影子的墙)
    --  Date  : 2010-01-11 21:55:22
    --  blog  : blog.csdn.net/herowang
    ---------------------------------
     
    IF OBJECT_ID('[tb]') IS NOT NULL 
        DROP TABLE [tb]
    go
    CREATE TABLE [tb] (提问帖子数 INT,回复帖子数 INT,所在地区 VARCHAR(4),所在行业 VARCHAR(4))
    INSERT INTO [tb]
    SELECT 3,4,'山东','机械' UNION ALL
    SELECT 6,5,'海南','冶金' UNION ALL
    SELECT 5,8,'北京','教育'
    declare @s varchar(8000)
    set @s='select 所在行业'
    select @s=@s+' ,'''+所在地区+'''=isnull(max(case when 所在地区='''+所在地区 +''' then ltrim(提问帖子数)+''/''+ltrim(回复帖子数) end),'''')'
    from tbprint @sexec(@s+'from tb group by 所在行业')所在行业 山东 海南 北京
    机械 3/4
    教育 5/8
    冶金 6/5
      

  2.   

    --借影子哥数据
     
    IF OBJECT_ID('[tb]') IS NOT NULL 
        DROP TABLE [tb]
    go
    CREATE TABLE [tb] (提问帖子数 INT,回复帖子数 INT,所在地区 VARCHAR(4),所在行业 VARCHAR(4))
    INSERT INTO [tb]
    SELECT 3,4,'山东','机械' UNION ALL
    SELECT 6,5,'海南','冶金' UNION ALL
    SELECT 5,8,'北京','教育'select 
    所在行业 ,
    isnull(max(case when 所在地区='山东' then ltrim(提问帖子数)+'/'+ltrim(回复帖子数) end),'') as '山东' ,
    isnull(max(case when 所在地区='海南' then ltrim(提问帖子数)+'/'+ltrim(回复帖子数) end),'') as '海南',
    isnull(max(case when 所在地区='北京' then ltrim(提问帖子数)+'/'+ltrim(回复帖子数) end),'') as '北京'
    from
     tb 
    group by
     所在行业
    /*所在行业 山东                        海南                        北京
    ---- ------------------------- ------------------------- -------------------------
    机械   3/4                                                 
    教育                                                       5/8
    冶金                             6/5                       
    警告: 聚合或其他 SET 操作消除了空值。(3 行受影响)
    */
      

  3.   

    IF OBJECT_ID('[tb]') IS NOT NULL 
        DROP TABLE [tb]
    go
    CREATE TABLE [tb] (提问帖子数 INT,回复帖子数 INT,所在地区 VARCHAR(4),所在行业 VARCHAR(4))
    INSERT INTO [tb]
    SELECT 3,4,'山东','机械' UNION ALL
    SELECT 3,4,'山东','教育' UNION ALL
    SELECT 6,5,'海南','冶金' UNION ALL
    SELECT 5,8,'北京','教育'declare @sql varchar(8000)
    select @sql = isnull(@sql+',','')+'max(case 所在地区 when '''+所在地区+''' 
    then ltrim(cast(提问帖子数*100.0/回复帖子数 as dec(18,2)))+''%'' else ''0%'' end) as ['+所在地区+']'
    from (select distinct top 100 percent 所在地区 from [tb] order by 所在地区 desc) t
    select @sql = 'select 所在行业,'+@sql+' from tb group by 所在行业'exec(@sql)
    ----------------------------
    机械 75.00% 0% 0%
    教育 75.00% 0% 62.50%
    冶金 0% 120.00% 0%