Сортировка по дате по двум отдельным столбцам в полном внешнем объединении - PullRequest
2 голосов
/ 20 октября 2011

У меня есть два столбца данных, которые я выстраиваю, используя полное внешнее объединение, но оно включает в себя два отдельных столбца даты, которые затрудняют сортировку по.

В таблице 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.

Спасибо.

1 Ответ

3 голосов
/ 20 октября 2011

ORDER BY ISNULL(P.POSdate,L.date) должен делать то, что вам нужно, я думаю?

...