2012-05-08 7 views
2

私は注文のあるテーブルを持っています。各注文はdelivery_datecollection_dateです。2つの日付列によるSQLの注文

私は次のことが何であるかを示す1週間のスケジュールとして注文を取得したいと思います。

私は、火曜日の納品と木曜日の納品の間に水曜日のコレクションが表示されるように、タイムシーケンスを表示したいと思います。

SQLでこれを行う方法に関するアイデアはありますか?

+0

使用している何datbaseの線に沿って何かでしょうか? MySQL、Oracle? MSSQL? SQLite?日付データを異なる方法で扱い、異なる名前の関数を扱います。すべての回答は、おそらく特定のベンダーに依存するでしょう。 – FrustratedWithFormsDesigner

答えて

7

ユニオンALLを使用して、私はあなたの注文記録をそれぞれ2つのレコードとして扱います:1つは配送用、もう1つはコレクション用です。別の日付(修復?)があった場合は、同様のフィールドを持つ別のサブクエリを結合します。

ご注文の表に仕様を記載していないため、私はこれを多く取り上げました。

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

ご返信ありがとうございます。私はこれらの両方を試し、どのスーツが最適かを見てみましょう。これは、結果として1つの名前の下に2つの日付をマージする可能性があります。だから、私は同じ注文が2回表示されるように自分のコードにチェックを入れる必要があると思いますか? – 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

関連する問題