有这么一个视图表
信息ID 所述栏目   所属部门 积分
  1      公告栏    部门a    1
  2     综合信息   部门b    2
  3     图片新闻   部门c    1
  4      公告栏    部门a    1
  5     图片新闻   部门a    1   
。用户要求列出每个部门的每个栏目积分表,也就是变成了这样栏目名称 部门a  部门b  部门c 合计
公告栏     1      2      3    6
图片新闻   2      4      5    11
综合信息   4      3      1    8

合计       7      9      9    25我想知道这能用一个sql列出来吗,如果能得话,如何列出来呀,对我来说太难了  

解决方案 »

  1.   

    90度行转列 在加一个compute  by
      

  2.   

    我已经找到统计方法了,但我用的是asp编程,这个查询语句只能在查询分析器中运行,我如何做成视图?或者写成asp的语句???DECLARE @s nvarchar(4000)
    SET @s = ''
    SELECT @s = @s + ',' + quotename([bumen_name]) 
    + '=sum(case when [bumen_name]=' + quotename([bumen_name], '''') 
    + ' then [jf] else 0 end)'
    FROM jftj1
    GROUP BY [bumen_name], [bumen_px]
    ORDER BY [bumen_px] ASC 
    EXEC ('select [lm_name] as 栏目' + @s + ',[总积分]=sum([jf])  from jftj1 group by [lm_name],[lm_px] order by [lm_px] asc')
      

  3.   

    如果是ASP的话,直接查询后到页面上去转更方便.用层可以实现,把一条记录放在一个层里,各层并列排放.
      

  4.   


    你不是在ASP里嘛,只要 rs(0),rs(1),rs(2),..... 就能直接得到各列的值了.
      

  5.   


    if object_id('tb') is not null
       drop table tb
    go
    create table tb
    (
     信息ID int identity(1,1),
     所述栏目 varchar(10),
     所属部门 varchar(10),
     积分 int
    )
    go
    insert into tb(所述栏目,所属部门,积分)
    select '公告栏','部门a',1 union all
    select '综合信息','部门b',2 union all
    select '图片新闻','部门c',1 union all
    select '公告栏','部门a',1 union all
    select '图片新闻','部门a',1
    go
    declare @sql1 varchar(8000)
    declare @sql2 varchar(8000)
    select @sql1=isnull(@sql1+',','')+'['+所属部门+']=sum(case when 所属部门='''+所属部门+''' then 积分 else 0 end)',@sql2=isnull(@sql2+',','')+'(select sum(积分) from tb where 所属部门='''+所属部门+''')' from (select distinct 所属部门 from tb)t
    exec('select 所述栏目,'+@sql1+',合计=sum(积分) from tb group by 所述栏目'+
          ' union all '+
          'select ''合计'','+@sql2+',(select sum(积分) from tb)')
    /*
    结果数据
    所述栏目       部门a         部门b         部门c         合计
    ---------- ----------- ----------- ----------- -----------
    公告栏        2           0           0           2
    图片新闻       1           0           1           2
    综合信息       0           2           0           2
    合计         3           2           1           6(4 行受影响)*/