2011-10-20 3 views
2

두 개의 데이터 열이 있습니다. 전체 외부 조인을 사용하여 일렬로 정렬되지만 두 개의 별도 날짜 열이 포함되어 있으므로 정렬하기가 어렵습니다.전체 외부 조인에서 두 개의 개별 열을 기준으로 날짜순으로 정렬

표 1에는 제품에 대한 판매 순위 데이터가 있습니다. 표 2에는 동일한 제품에 대한 실제 판매 데이터가 있습니다.

각 테이블에는 다른 테이블에없는 날짜에 대한 항목이있을 수 있습니다.

select L.ListID, L.ASIN, L.date, L.ranking, P.ASIN, P.POSdate, P.units from ListItem L 
full outer join POSdata P on 
    L.ASIN = P.ASIN and 
    L.date = P.POSdate and 
    (L.ListID = 1 OR L.ASIN is null) 
where (L.ASIN = 'xxxxxxxxxx' and L.ListID = 1) or 
     (P.ASIN = 'xxxxxxxxxx' and L.BookID is null) 
order by POSdate, date 

그것은 약간의 :

여기
ProdID L.Date   P.Date  Rank Units 
101  null   2011-10-01 null 740 
101  2011-10-02  2011-10-02 23  652 
101  2011-10-03  null   32  null 

내가이 데이터를 끌어 사용하고있는 쿼리는 다음과 같습니다

그래서 전체 가입 후, 우리는이 간단한 예 같은 것을 끝낼 구상 더 복잡한 이유는 제품이 여러 목록에 나타날 수 있기 때문입니다. 계정도 고려해야하지만 필요한 데이터가 반환됩니다. 물론 누군가가 그것을 가지고 있다면 그것을 향상시키기위한 제안에 대해 공개적입니다.

문제는 두 날짜 열 모두에 적어도 일부 NULL이 포함될 가능성이있을 때 어떻게 정렬 할 수 있습니까? Ordering By는 양쪽 컬럼이 하나의 NULL에있을 때 작동하지 않습니다.

감사합니다.

답변

3

ORDER BY ISNULL(P.POSdate,L.date) 내가해야 할 일을해야한다고 생각하니?

+2

마틴, 당신은 웹 서비스와 같습니다. 즉각적이고 정확한 답. 감사! – nycdan

+0

upvote, 대단한 !! – Marco

+0

내가 한 가지 추가 사항을 말씀 드리고 싶습니다. ISNULL (P.POSdate, L.date)을 date1로 선택 목록에 넣고 Order By Order1을 수행했습니다. 그 결과 내 결과 집합에 단일 날짜 열을 표시 할 수 있습니다. – nycdan

관련 문제