现在有4张表,其记录如下:                        表1:学生表 学生编号   测验方式区分    测验学科编号   测验区分   合格判定区分 
------------------------------------------------------------------------------------------
 00001                1                1              1                0
 00002                1                1              0                0
 00003                2                1              1                1
 00004                2                2              1                1
 00005                2                2              0                0
 00006                3                3              1                1
 00007                3                3              1                0
 00008                1                4              1                1
 00009                3                5              0                0
 00010                3                4              1                1
------------------------------------------------------------------------------------------
字段说明:
  学生编号(PK)
  测验方式区分(外键,与测验方式表关联)
  测验学科编号(外键,与学科表关联)
  测验区分(0值表示缺席测验,1表示参加了测验)
  合格判定区分(0值表示测验不合格,1表示测验合格)                          表2:测验方式表 测验方式区分      测验方式
----------------------------------------------------------------------------
     1                 一般
     2                年中考
     3                年终考
     4                升学考
----------------------------------------------------------------------------字段说明:
  测验方式区分(PK)
                           表3:学科表 学科编号   学科名称      隶属学部
----------------------------------------------------------------------------
   1            会计           1
   2            英语           2
   3            几何           3
   4            物理           3
   5            日语           2
   6            法语           2
   7            音乐           5
   8            德育           5
----------------------------------------------------------------------------字段说明:
  学科编号(PK)
  隶属学部(外键,与学部表关联,表示该门学科所隶属的学部)                         表4:学部表 学部编号      学部名称
----------------------------------------------------------------------------
   1             经济部
   2             外语部
   3             数理部
   4             外贸部
   5             文艺部
----------------------------------------------------------------------------字段说明:
  学部编号(PK)以上面表中的记录为准,统计学生表中在不同的测验方式下,不同的学部下的学生测验状况,要求查出如下形式:
说明:下面的学生数是指应该参加某门学科测验的学生数
     实测数(实际参加测试的人数)=学生数-缺席测验人数
     倍率=实际参加测试的人数/合格者人数测验方式 学部  学科 学生数 实测数 合格者数  倍率
-----------------------------------------------------------------------------------------
                    会计     2          1         0         1/0
          经济部-------------------------------------------------------------------------
                    小计     2          1         0         1/0
        ---------------------------------------------------------------------------------
                    物理     1          1         1         1/1
一般     数理部-------------------------------------------------------------------------
                    小计     1          1         1         1/1
        ---------------------------------------------------------------------------------
           合计              3          2         1         2/1
-----------------------------------------------------------------------------------------
                    会计     1          1         1         1/1
          经济部-------------------------------------------------------------------------
                    小计     1          1         1         1/1
年中考  ----------------------------------------------------------------------------------
                    英语     2          1         1         1/1
          外语部 ------------------------------------------------------------------------
                    小计     2          1         1         1/1
        ---------------------------------------------------------------------------------
           合计              3          2         2         2/2
-----------------------------------------------------------------------------------------
                    几何     2          2         1         2/1
                 -----------------------------------------------------------------------
                    物理     1          1         1         1/1
          数理部 -----------------------------------------------------------------------
                    小计     3          3         2         3/2
年终考  --------------------------------------------------------------------------------- 
                    日语     1          0         0         0/0
          外语部 ------------------------------------------------------------------------
                    小计     1          0         0         0/0
        ---------------------------------------------------------------------------------
           合计              4          3         2         3/2
-----------------------------------------------------------------------------------------

解决方案 »

  1.   

    1.数据只要能够实现
    ------------------------------------------------------------------------
    一般    经济部    会计     2          1         0         1/0
    ------------------------------------------------------------------------
    一般    经济部    小计     2          1         0         1/0
    ------------------------------------------------------------------------
    一般    数理部    物理     1          1         1         1/1
    ------------------------------------------------------------------------
    一般    数理部   小计     1          1         1         1/1
    -----------------------------------------------------------------------
    一般      合计     Null      3          2         1         2/1
    -----------------------------------------------------------------------
    2.我觉得你需要的样式可以通过定义DataGrid的单元格来实现,这个网上例子很多。
      

  2.   

    declare @t1 table(学生编号 varchar(10),测验方式区分 int,测验学科编号 int,测验区分 int,合格判定区分 int) 
    insert into @t1 select '00001',1,1,1,0
    insert into @t1 select '00002',1,1,0,0
    insert into @t1 select '00003',2,1,1,1
    insert into @t1 select '00004',2,2,1,1
    insert into @t1 select '00005',2,2,0,0
    insert into @t1 select '00006',3,3,1,1
    insert into @t1 select '00007',3,3,1,0
    insert into @t1 select '00008',1,4,1,1
    insert into @t1 select '00009',3,5,0,0
    insert into @t1 select '00010',3,4,1,1declare @t2 table(测验方式区分 int,测验方式 varchar(10))
    insert into @t2 select 1,'一般'
    insert into @t2 select 2,'年中考'
    insert into @t2 select 3,'年终考'
    insert into @t2 select 4,'升学考'declare @t3 table(学科编号 int,学科名称 varchar(6),隶属学部 int)
    insert into @t3 select 1,'会计',1
    insert into @t3 select 2,'英语',2
    insert into @t3 select 3,'几何',3
    insert into @t3 select 4,'物理',3
    insert into @t3 select 5,'日语',2
    insert into @t3 select 6,'法语',2
    insert into @t3 select 7,'音乐',5
    insert into @t3 select 8,'德育',5declare @t4 table(学部编号 int,学部名称 varchar(8))
    insert into @t4 select 1,'经济部'
    insert into @t4 select 2,'外语部'
    insert into @t4 select 3,'数理部'
    insert into @t4 select 4,'外贸部'
    insert into @t4 select 5,'文艺部'select
        b.测验方式,
        d.学部名称,
        case when d.学部名称 is null then '合计' else isnull(c.学科名称,'小计') end as 学科名称,
        学生数=count(a.测验区分),
        实测数=sum(a.测验区分),
        合格者数=sum(a.合格判定区分),
        倍率=rtrim(sum(a.测验区分))+'/'+rtrim(sum(a.合格判定区分))
    from
        @t1 a,@t2 b,@t3 c,@t4 d
    where
        a.测验方式区分=b.测验方式区分 
        and
        a.测验学科编号=c.学科编号
        and
        c.隶属学部=d.学部编号
    group by
        b.测验方式区分,b.测验方式,d.学部名称,c.学科名称 with rollup
    having grouping(测验方式)=0
    order by
        b.测验方式区分/*
    测验方式       学部名称     学科名称   学生数         实测数         合格者数        倍率
    ---------- -------- ------ ----------- ----------- ----------- ------------------------- 
    一般 经济部 会计 2 1 0 1/0
    一般 经济部 小计 2 1 0 1/0
    一般 数理部 物理 1 1 1 1/1
    一般 数理部 小计 1 1 1 1/1
    一般 NULL 合计 3 2 1 2/1
    年中考 经济部 会计 1 1 1 1/1
    年中考 经济部 小计 1 1 1 1/1
    年中考 外语部 英语 2 1 1 1/1
    年中考 外语部 小计 2 1 1 1/1
    年中考 NULL 合计 3 2 2 2/2
    年终考 数理部 几何 2 2 1 2/1
    年终考 数理部 物理 1 1 1 1/1
    年终考 数理部 小计 3 3 2 3/2
    年终考 外语部 日语 1 0 0 0/0
    年终考 外语部 小计 1 0 0 0/0
    年终考 NULL 合计 4 3 2 3/2
    */
      

  3.   

    多谢楼上的我还想知道如果用标准SQL的话,该怎么写(就是说不用某种数据库独有的语法),敬请回复.