现有表BD_WORK_INFO如下:
CREATE_BY   QUESTION_TYPE   CREATE_DATE   FILL_TIME(耗时) 
A            T102            (DATE 类型)       0.14
B            T106            (DATE 类型)       0.15
C            T103            (DATE 类型)       0.17
A            T106            (DATE 类型)       0.18
B            T102            (DATE 类型)       0.19
D            T109            (DATE 类型)       0.33
A            T102            (DATE 类型)       0.02
A            T103            (DATE 类型)       0.1
(表大致如上,表很大,数据很多,但是只需要用到这几个。创建者一共有五十多个,问题类型一共有11个,但是只需要其中的7个。现在要做的就是把这个表一些数据取出做计算后转存在另外一张表,做一个报表的后台数据表,要求如下:)姓名  T106  耗时  T102  耗时  T103  耗时 
A      2    0.33   1    0.02   1     0.1(其中,T106需要以自然周统计,T102需要以自然月统计。列T102,T106,T103的内容是QUESTION_TYPE 中出现的次数,也就是COUNT()函数,耗时是出现同一QUESTION_TYPE  的总的耗时数,比如说创建人A在一周内出现了4次T106问题,那耗时就是这四次的总耗时。求个存储过程,同时需要一个视图,因为前台我还做不出来)
给我个思路也行,count只能取一个元素的个数,没法取所有的,所以我不知道该怎弄,谢谢了!实在没分了。。

解决方案 »

  1.   

    用decode应该可以做到,一条SQL。大概如下:select create_by, T106,T106_TIME,T103,T103_TIME from (
    select create_by, decode(question_type,'T106',cnt,0) T106,
                      decode(question_type,'T106',stime,0) T106_TIME,
                      decode(question_type,'T103',cnt,0) T103,
                      decode(question_type,'T103',stime,0) T103_TIME
    from
    (select create_by, question_type,count(*) cnt,sum(fill_time) stime from t1)
    )
      

  2.   

    不好意思,还漏了时间的条件因为时间条件不同,需要分别gruop by。