2012-05-08 5 views
2

주문이있는 테이블이 있습니다. 각 광고 주문에는 delivery_datecollection_date이 있습니다.2 개의 날짜 열에 의한 SQL 순서

다음 주일에해야 할 일을 보여주는 일정으로 주문을 검색하고 싶습니다.

그래서 수요일 컬렉션이 화요일 배달과 목요일 배달이 표시되도록 시간 순서를 표시하고 싶습니다.

SQL에서이 작업을 수행하는 방법에 대한 아이디어가 있으십니까?

+0

당신이 사용하는 어떤 DATBASE의 라인을 따라 뭔가있을거야? MySQL, Oracle? MSSQL? SQLite? 이들은 날짜 데이터를 다르게 처리하고 차별화 된 기능을 처리합니다. 모든 답변은 특정 공급 업체에 따라 달라질 수 있습니다. – FrustratedWithFormsDesigner

답변

7

유니온 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