有一张表订单表TBLA,字段有
ORDERID,PROID,ENDTIME,BEGINTIME
订单编号,订单商品编号,订单结束时间,订单需求时间相关记录
ORDERID PROID ENDTIME BEGINTIMER0502749 P63230415 2011-09-08 9:03:59 2011-09-05 19:20:44
R0502755 P63230415 2011-09-08 9:03:46 2011-09-05 19:21:39
R0502755 P63230030 2011-09-08 9:03:46 2011-09-05 19:21:39
R0502755 P63230133 2011-09-08 9:03:46 2011-09-05 19:21:39
R0502759 P63220049 2011-09-08 9:03:32 2011-09-05 19:22:31
R0502759 P63260018 2011-09-08 9:03:32 2011-09-05 19:22:31
R0502846 P63220239 2011-09-08 9:03:19 2011-09-05 19:40:59
R0502882 P63260018 2011-09-08 9:06:55 2011-09-05 19:48:08
R0502882 P63220144 2011-09-08 9:06:55 2011-09-05 19:48:08
R0502882 P63260284 2011-09-08 9:06:55 2011-09-05 19:48:08需要计算所有订单的总天数,本来可以直接使用SUM(订单结束时间-订单需求时间),但是这里有个问题,因为该张表里记录了商品的明细,所以会出现相的订单有重复的订单结束时间和订单需求时间。对于相同的订单编号要求只记录一次时间的差值,这SQL语句如何写呢?

解决方案 »

  1.   

    select ORDERID,ENDTIME,BEGINTIME from tableA  group by ORDERID,ENDTIME,BEGINTIME
      

  2.   

    或用 select distinct 
      

  3.   

    select SUM(订单结束时间-订单需求时间) from(select distinct(ORDERID),ENDTIME ,BEGINTIME from  表)
      

  4.   

    select sum(endtime-begintime) from (select ORDERID,ENDTIME,BEGINTIME from table group by ORDERID,ENDTIME,BEGINTIME);select sum(endtime-begintime) from (select distinct ORDERID,ENDTIME,BEGINTIME from table)