最早:
SELECT A.物品,TO_CHAR(A.时间,'yyyymmdd')日期, SUM(A.数量)
  FROM TABLE A,
       (SELECT 物品,TO_CHAR(时间,'yyyymmdd')日期, MIN(时间)时间 FROM TABLE GROUP BY 物品,TO_CHAR(时间,'yyyymmdd')) B
 WHERE A.物品= B.物品
   AND A.时间= B.时间
    AND A.日期=B.日期
 GROUP BY A.物品,TO_CHAR(A.时间,'yyyymmdd')最晚:
SELECT A.物品,TO_CHAR(A.时间,'yyyymmdd')日期, SUM(A.数量)
  FROM TABLE A,
       (SELECT 物品,TO_CHAR(时间,'yyyymmdd')日期, MAX(时间)时间 FROM TABLE GROUP BY 物品,TO_CHAR(时间,'yyyymmdd')) B
 WHERE A.物品= B.物品
   AND A.时间= B.时间
    AND A.日期=B.日期
 GROUP BY A.物品,TO_CHAR(A.时间,'yyyymmdd')

解决方案 »

  1.   

    --最晚
    select sum(数量) from
    (select tempMaro2.*,row_number() over(partition by 物品 order by 时间 desc) px from tempMaro2) 
    where px = 1--最早
    select sum(数量) from
    (select tempMaro2.*,row_number() over(partition by 物品 order by 时间) px from tempMaro2) 
    where px = 1
      

  2.   

    --最晚
    select *  from
    (select tempMaro2.*,row_number() over(partition by 物品,trunc(时间) order by 时间 desc) px from tempMaro2) 
    where px = 1;--最早
    select *  from
    (select tempMaro2.*,row_number() over(partition by 物品,trunc(时间) order by 时间) px from tempMaro2) 
    where px = 1;
      

  3.   

                      WITH TABLEA AS                                         
                       ( SELECT to_date('2013-9-20 13:00:00','yyyy-mm-dd hh24:mi:ss') C1,1 C2,3 C3 FROM DUAL 
                         SELECT to_date('2013-9-20 14:00:00','yyyy-mm-dd hh24:mi:ss') C1,1 C2,5 C3 FROM DUAL 
                         SELECT to_date('2013-9-20 17:00:00','yyyy-mm-dd hh24:mi:ss') C1,1 C2,7 C3 FROM DUAL 
                                                                             
                         SELECT to_date('2013-9-20 13:00:00','yyyy-mm-dd hh24:mi:ss') C1,2 C2,3 C3 FROM DUAL 
                         SELECT to_date('2013-9-20 14:00:00','yyyy-mm-dd hh24:mi:ss') C1,2 C2,5 C3 FROM DUAL 
                         SELECT to_date('2013-9-20 17:00:00','yyyy-mm-dd hh24:mi:ss') C1,2 C2,7 C3 FROM DUAL 
                                                                           
                         SELECT to_date('2013-9-20 13:00:00','yyyy-mm-dd hh24:mi:ss') C1,3 C2,3 C3 FROM DUAL 
                         SELECT to_date('2013-9-20 14:00:00','yyyy-mm-dd hh24:mi:ss') C1,3 C2,5 C3 FROM DUAL 
                         SELECT to_date('2013-9-20 17:00:00','yyyy-mm-dd hh24:mi:ss') C1,3 C2,7 C3 FROM DUAL)
    最早:   SELECT * FROM TABLEA A,
       (SELECT TRUNC(C1),C2,min(C1)C1 FROM TABLEA GROUP BY TRUNC(C1),C2)B WHERE A.C1=B.C1 AND A.C2=B.C2 
     
       
       
     最晚:  SELECT * FROM TABLEA A,
       (SELECT TRUNC(C1),C2,MAX(C1)C1 FROM TABLEA GROUP BY TRUNC(C1),C2)B WHERE A.C1=B.C1 AND A.C2=B.C2 
                                                                          
    、、、、构造数据比查询还麻烦。。
      

  4.   

    1.row_number
    2.first_value,last_value
    都是分析函数
      

  5.   

     with  as
    (select t.*,row_number() over(partition by 物品  order by 时间  desc) rn from t) t1;
    select sum(数量) from  t1