2011-10-20 29 views
2

我有兩列數據使用完全外部聯接進行排隊,但它包含兩個單獨的日期列,這使得排序方式具有挑戰性。按日期在完全外部聯接中的兩個單獨列上排序

表1具有產品的銷售排名數據。 表2具有同一產品的實際銷售數據。

每個表格可能有另一個沒有的日期條目。

所以設想後全面加入,我們最終像這樣簡單的例子:

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 

這裏是我用拉這個數據的查詢:

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 

這是一個有點因爲產品可能出現在多個列表中,所以我必須考慮到這一點,但它會返回我需要的數據。我很樂意提出改善它的建議,當然如果有人有。

問題是,當兩個日期列都可能至少有一些NULL時,我該如何正確排序。當兩個列都有一個NULL時,我現在訂購的方式將不起作用。

謝謝。

回答

3

ORDER BY ISNULL(P.POSdate,L.date)應該做什麼你需要我想?

+2

馬丁,你就像一個網絡服務。即時,正確的答案。謝謝! – nycdan

+0

upvote,太棒了! – Marco

+0

我想提一件我做的事情。我將ISNULL(P.POSdate,L.date)作爲date1放入我的SELECT列表中,並按照date1排序。這使我能夠在結果集中顯示單個日期列。 – nycdan