有两张表(需求表、测试用例表)
需求表:
pk_demand 需求Id
d_name 需求名称测试用例表:
pk_tcase --用例id
pk_demand --需求Id
name --测试用例名称
state --状态 0 自由态 1 已通过 2 未通过 3 待处理一个需求对应多个用例,查询按需求分组。显示字段如下:需求名称  测试用例名称  用例总数目  已通过数目 未通过数目  完成率(完成率=已通过总数目/用例总数)   

解决方案 »

  1.   

    SELECT   t1.d_name "需求名称",
             t2.name "测试用例名称",
             t2.total "用例总数目",
             t2.done "已通过数目",
             t2.todo "未通过数目",
             DECODE (t2.total, 0, 0, TRUNC (t2.done * 100 / t2.total, 2))
                "完成率(%)"
      FROM   demand_table t1, (  SELECT   pk_tcase,
                                          pk_demand,
                                          name,
                                          COUNT (pk_tcase) total,
                                          COUNT (DECODE (state, 1, 1, NULL)) done,
                                          COUNT (DECODE (state, 2, 1, NULL)) todo
                                   FROM   testing_table
                               GROUP BY   pk_tcase, pk_demand, name) t2
     WHERE   t1.pk_demand = t2.pk_demand
      

  2.   

    实测数据:CREATE TABLE Require
    (
        pk_demand NUMBER(4),
        d_name    VARCHAR2(20)
    );
    INSERT INTO Require VALUES(1, '登录模块');
    INSERT INTO Require VALUES(2, '注册模块');CREATE TABLE TestCase
    (
        pk_tcase NUMBER(4),
        pk_demand NUMBER(4),
        NAME    VARCHAR2(20),
        state   NUMBER(4)
    );
    INSERT INTO TestCase VALUES(1, 1, '密码验证', 0);
    INSERT INTO TestCase VALUES(2, 1, '文本框验证', 1);
    INSERT INTO TestCase VALUES(3, 1, '用户名验证', 2);
    INSERT INTO TestCase VALUES(4, 1, '防注入验证', 3);
    INSERT INTO TestCase VALUES(5, 2, '用户名', 0);
    INSERT INTO TestCase VALUES(6, 2, '密码', 1);
    INSERT INTO TestCase VALUES(7, 2, '确认密码', 1);
    INSERT INTO TestCase VALUES(8, 2, '验证码', 2);
    实测结果:
      

  3.   

    create table tbXq  
    (
      pk_demand varchar2(10),
      d_name varchar2(10) 
    ); insert into tbxq values ('1','a');
    insert into tbxq values ('2','b');
    insert into tbxq values ('3','c');
    insert into tbxq values ('4','d');
    commit;create table tbTest
    (
      pk_tcase varchar2(10),
      pk_demand varchar2(10),
      sname     varchar2(30),
      state     number(1) 
    );insert into tbTest values ('1','1','test1',1);
    insert into tbTest values ('2','2','test2',2);
    insert into tbTest values ('3','3','test3',3);
    insert into tbTest values ('4','4','test4',0);
    insert into tbTest values ('5','3','test3',2);
    insert into tbTest values ('6','2','test2',3);insert into tbTest values ('7','1','test1',0);
    insert into tbTest values ('8','2','test2',1);
    insert into tbTest values ('9','3','test3',2);
    insert into tbTest values ('10','4','test4',0);
    insert into tbTest values ('11','3','test3',1);
    insert into tbTest values ('12','2','test2',2);
    commit;
    --查询结果
    select a.d_name as 需求名称,b.sname as 测试用例名称,count(*) as 用例总数目,   
     sum(decode(b.state,1,1,0)) as 已通过数目, 
     sum(decode(b.state,2,1,0)) as 未通过数目,
     sum(decode(b.state,1,1,0))/count(*) as 完成率
     from tbxq a,tbTest b where 
    a.pk_demand = b.pk_demand 
    group by a.d_name,b.sname;
      

  4.   

    1 b test2 4 1 2 0.25
    2 c test3 4 1 2 0.25
    3 d test4 2 0 0 0
    4 a test1 2 1 0 0.5