首先一个问题表A,结构如下:
 问题   答案
 Q1     满意
 Q1     不满意
 Q2     不满意
答案个数不限,每个问题也不确定有多少个答案
 调查表B,结构如下:
问题   答案  
 Q1     满意
 Q1     不满意
 Q2     不满意
现在要统计出如下结果:
问题   答案   回答人数    比例
Q1     满意    2         50%
Q1     不满意  2         50%
Q2     满意    2         100%调查表要能列出所有的问题和答案,不仅仅是有统计的才算,谢谢了.
 

解决方案 »

  1.   

    create table ta(问题 varchar(50),答案 varchar(50))
    insert into ta select 'q1','满意'
    insert into ta select 'q1','不满意'
    insert into ta select 'q2','不满意'create table tb(问题 varchar(50),答案 varchar(50))
    insert into tb select 'q1','满意'
    insert into tb select 'q1','不满意'
    insert into tb select 'q2','不满意'select 问题,答案,
    回答人数=(select count(1) from tb where 问题=t.问题),
    比例=ltrim(cast(count(1)*100.0/(select count(1) from tb where 问题=t.问题) as decimal(18,0)))+'%'
    from ta t
    group by 问题,答案问题 答案 回答人数 比例
    q1 不满意 2 50%
    q1 满意 2 50%
    q2 不满意 1 100%
      

  2.   

    问题  答案  回答人数    比例
    Q1    满意    2        50%
    Q1    不满意  2        50%
    Q2    满意    2        100% 
    怎樣計算的?
      

  3.   

    论坛又出问题了,
    补充一点,另外还有个答案表,是专门存放答案的.
    调查表B是调查的结果,和A表不同的,因为A表中有的B表不一定有,上面是看起来相同的.
      

  4.   


    create table 问题表(问题 varchar(10),答案 varchar(10)) 
    insert 问题表 select 'Q1',    '满意' 
    insert 问题表 select 'Q1',    '不满意' 
    insert 问题表 select 'Q2',    '不满意' 
    insert 问题表 select 'Q3',    '满意'
    insert 问题表 select 'Q1',    '不好说'create table 调查表(问题 varchar(10),答案 varchar(10))
    insert 调查表 select 'Q1',    '满意' 
    insert 调查表 select 'Q1',    '不满意' 
    insert 调查表 select 'Q2',    '不满意'
    insert 调查表 select 'Q1',    '满意' 
    select AA.*,BB.回答人数,BB.比例 from 问题表 AA left join
    (select 问题,答案,count(*)回答人数,count(*)*100.0/(select count(*) from 调查表 B where A.问题=B.问题)比例
    from 调查表 A group by 问题,答案
    )BB on AA.问题=BB.问题 and AA.答案=BB.答案
    order by AA.问题,回答人数 descQ1 满意 2 66.666666666666
    Q1 不满意 1 33.333333333333
    Q1 不好说 NULL NULL
    Q2 不满意 1 100.000000000000
    Q3 满意 NULL NULL