4

我有一张订单表。每个订单都有一个delivery_date, 和一个collection_date

我想检索订单作为一周的时间表,显示接下来要做的事情。

所以我想我希望显示时间序列,以便周三的集合出现在周二的交付和周四的另一个交付之间。

关于如何使用 SQL 执行此操作的任何想法?

4

2 回答 2

9

使用 Union ALL,我将您的每个订单记录视为两条记录:一条用于交货,一条用于收集。如果您有另一个日期(修复?),您将合并另一个具有类似字段的子查询。

因为你没有在你的订单表上提供任何规格,所以我编了很多。

select *
from (
   Select OrderID
       , 'Colection' as VisitType
      , Collection_Date as VisitDate
   from Orders
   Union All
   Select OrderID
     , 'Delivery' as VisitType
     , Delivery_Date as VisitDate
  from Orders
) as v
order by v.VisitDate
于 2012-05-08T21:29:01.260 回答
7

根据您使用的数据库,它将类似于以下内容

ORDER BY CASE WHEN delivery_date > collection_date 
         THEN collection_date ELSE delivery_date END
于 2012-05-08T21:29:52.883 回答