我有一个订单表,每个订单都有一个delivery_date
和一个collection_date
。
我想以一周的时间表形式检索订单,显示下一步完成的事情。
因此我想要展示时间顺序,使得星期三的收货出现在星期二的交货和星期四的另一次交货之间。
有什么关于如何使用SQL实现这一目标的想法吗?
我有一个订单表,每个订单都有一个delivery_date
和一个collection_date
。
我想以一周的时间表形式检索订单,显示下一步完成的事情。
因此我想要展示时间顺序,使得星期三的收货出现在星期二的交货和星期四的另一次交货之间。
有什么关于如何使用SQL实现这一目标的想法吗?
使用Union ALL,我将每条订单记录视为两条记录:一条用于交付,一条用于收集。如果您有另一个日期(修理?),则可以使用类似字段的子查询添加Union操作。
由于您没有提供订单表的任何规格,因此我进行了很多假设。
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