我有一张表T
有如下字段
A       B        C     D          E
1       1001     1     2     2009-3-16  6:00:00
1       1001     1     2     2009-3-16  12:00:00
1       1001     1     2     2009-3-16  18:04:00
2       2001     3     4     2009-3-16  19:00:00
2       2001     3     4     2009-3-16  15:02:00
2       2002     5     6     2009-3-16  8:00:01
2       2002     5     6     2009-3-16  13:00:05
2       2002     7     8     2009-3-16  14:00:05
2       2002     7     9     2009-3-16  17:00:05
2       2002     7     9     2009-3-16  16:00:05
2       2002     8     9     2009-3-16  21:00:05
现在我要得出如下的结果
A       B        C      D                  E                                         count
1       1001     1      2      2009-3-16  6:00:00 --2009-3-16  18:04:00                3
2       2001     3      4      2009-3-16  15:02:00--2009-3-16  19:00:00                2
2       2002     5      6      2009-3-16  8:00:01-- 2009-3-16  13:00:05                2
2       2002     7      8      2009-3-16  14:00:05--2009-3-16  14:00:05                1
2       2002     7      9      2009-3-16  16:00:05--2009-3-16  17:00:05                2
2       2002     8      9      2009-3-16  21:00:05--2009-3-16  21:00:05                1请问这样的一个SQL 怎么实现呢  如还有疑问的地方,请在回复中说明  谢谢
       
    

解决方案 »

  1.   

    select A,B,C,D,min(E)||'-'||max(E),count(1) count
    from T 
    group by A,B,C,DE如果是Date型的转一下,是varchar的就不用管了.
      

  2.   

    E应该是Date类型吧select A,B,C,D,
    to_char(min(E),'yyyy-mm-dd hh24:mi:ss')||'-'||to_char(max(E),'yyyy-mm-dd hh24:mi:ss') E,
    count(*) count
    from T 
    group by A,B,C,D
      

  3.   

    select A,B,C,D,
    to_char(min(E),'yyyy-mm-dd hh24:mi:ss')||'-'||to_char(max(E),'yyyy-mm-dd hh24:mi:ss') E,
    count(*) count
    from T 
    group by A,B,C,D
      

  4.   


    select A,B,C,D,
    to_char(min(E),'yyyy-mm-dd hh24:mi:ss')||'--'||to_char(max(E),'yyyy-mm-dd hh24:mi:ss') E,
    count(*) count
    from T 
    group by A,B,C,D