Включение нулевых значений в SQL Подзапрос - PullRequest
0 голосов
/ 09 апреля 2020

Я должен указать город и штат доставки для заказа с самой большой задержкой доставки.

Я могу выполнить sh, например, так:

SELECT shipcity, shipstate
FROM orders
WHERE shipdate - orderdate = (SELECT MAX(shipdate - orderdate) FROM orders);

Но как я могу также включить заказы, которые еще не были отправлены, так что значение shipdate равно NULL?

Я попытался

SELECT shipcity, shipstate
FROM orders
WHERE (shipdate IS NULL) 
   OR (shipdate - orderdate = (SELECT MAX(shipdate - orderdate) FROM orders));

Но это возвращает все заказы, а не только заказ с самой большой задержкой.

Ответы [ 2 ]

1 голос
/ 09 апреля 2020

Попробуйте это

SELECT shipcity, shipstate
FROM orders
WHERE shipdate IS NOT NULL AND
      DATEDIFF(shipdate, orderdate) = (SELECT MAX(DATEDIFF(shipdate, orderdate)) FROM orders);

DATEDIFF Функция DATEDIFF () возвращает количество дней между двумя значениями даты.

SQL Образец FIDDLE http://sqlfiddle.com/#! 9 / 6df39a / 4

1 голос
/ 09 апреля 2020

Попробуйте это

SELECT shipcity, shipstate
FROM orders
WHERE (shipdate - orderdate = (SELECT MAX(shipdate - orderdate) FROM orders)) 
OR  (shipdate IS NULL and orderdate is NOT NULL )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...