日期:2014-05-16  浏览次数:20817 次

这样的SQL语句如何查询
有一张表订单表TBLA,字段有
ORDERID,PROID,ENDTIME,BEGINTIME
订单编号,订单商品编号,订单结束时间,订单需求时间

相关记录
ORDERID PROID ENDTIME BEGINTIME

R0502749 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语句如何写呢?

------解决方案--------------------
select ORDERID,ENDTIME,BEGINTIME from tableA group by ORDERID,ENDTIME,BEGINTIME
------解决方案--------------------
创建一张视图,不查询商品明细,然后查询视图。
------解决方案--------------------
select SUM(订单结束时间-订单需求时间) from(select distinct(ORDERID),ENDTIME ,BEGINTIME from 表)
------解决方案--------------------
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)