我有一张订单表。每个订单都有一个delivery_date
, 和一个collection_date
。
我想检索订单作为一周的时间表,显示接下来要做的事情。
所以我想我希望显示时间序列,以便周三的集合出现在周二的交付和周四的另一个交付之间。
关于如何使用 SQL 执行此操作的任何想法?
我有一张订单表。每个订单都有一个delivery_date
, 和一个collection_date
。
我想检索订单作为一周的时间表,显示接下来要做的事情。
所以我想我希望显示时间序列,以便周三的集合出现在周二的交付和周四的另一个交付之间。
关于如何使用 SQL 执行此操作的任何想法?
使用 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
根据您使用的数据库,它将类似于以下内容
ORDER BY CASE WHEN delivery_date > collection_date
THEN collection_date ELSE delivery_date END