2012-05-08 78 views
2

我有一個訂單表。每個訂單都有一個delivery_date和一個collection_date2個日期列的SQL訂單

我想檢索訂單作爲一週的時間表,顯示接下來要做的事情。

所以我想我要顯示的時間順序,以便星期三的收集出現在星期二的送貨和星期四的另一送貨之間。

有關如何使用SQL做到這一點的任何想法?

+0

您正在使用哪種datbase線的東西? MySQL,Oracle? MSSQL? SQLite的?他們以不同的方式處理日期數據並使用不同命名的函數。任何答案都可能取決於特定的供應商。 – FrustratedWithFormsDesigner

回答

7

使用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 
+0

也謝謝你的回覆。我會嘗試這兩種方法,看看最適合哪種。可能是這一個,因爲它將兩個日期合併在一個名字中。所以我想我需要檢查我的代碼,所以相同的順序不會顯示兩次? – Spunog

+0

IVe從中學到了很多,謝謝很多現在有完美的行爲:) – Spunog

2

根據您正在使用的數據庫,它會沿着

ORDER BY CASE WHEN delivery_date > collection_date 
     THEN collection_date ELSE delivery_date END 
+0

很酷。這是否與Mysql一起工作? – Spunog

+0

感謝您的幫助。是否可以將日期標記爲'DT_THE_DATE'之類的其他名稱,而不論其收集日期還是交貨日期? – Spunog

+0

@ user1383132:MySql有一個case語句(http://dev.mysql.com/doc/refman/5.0/en/case-statement.html) - 我相信你可以翻譯它。 – pdr