2014-12-12 3 views
0

У меня проблема с домашней работой, с которой у меня много проблем ... Я не ожидаю ответа, и я действительно хочу его изучить. Может ли кто-нибудь помочь мне с синтаксисом?SQL DateDiff Синтаксис

Задача: Для каждого заказа клиента укажите, сколько дней потребовалось, чтобы отправить заказ по порядку по самому длинному заказу, а затем по номеру заказа клиента. Покажите номер заказа клиента и количество дней для отправки. Включите заказы, которые еще не отправлены.

До сих пор у меня есть:

SELECT SalesOrder.SalesOrderNumber, 
DATEDIFF (d, MIN(SalesOrder.OrderDate), MAX(Shipment.ShipmentDate)) AS "DaysToShip" 
FROM SalesOrder, Shipment 
GROUP BY SalesOrder.SalesOrderNumber; 
+1

Вам не хватает условий соединения. –

+0

Не могли бы вы рассказать об этом? Я благодарю вас за ответ. –

+0

@JaseMcLeod Вам необходимо включить условие, которое связывает строки в 'SalesOrder' с строками в' Shipment'. Что-то вроде 'FROM SalesOrder JOIN Отгрузка в SalesOrder.SalesOrderNumber = Shipment.SalesOrderNumber', но замените правильные имена соответствующих столбцов. –

ответ

0

Иногда это полезно, чтобы увидеть промежуточную форму вашего запроса, чтобы оценить, если это предоставление правильных данных на каком-то этапе.

Рассмотрим следующий запрос, вытащил из вашего примера минус некоторые элементы:

SELECT SalesOrder.SalesOrderNumber, SalesOrder.OrderDate, Shipment.ShipmentDate 
FROM SalesOrder, Shipment 

Вы должны наблюдать результаты этого запроса и увидеть, как они отличаются от того, что вы ожидаете. В этом случае вы не указали, как связаны SalesOrder и Shipment. Результатом будет намного больше строк, чем есть заказы, причем каждый SalesOrder связан с каждой другой записью об отправке (перекрестное соединение).

После того, как вы обеспечиваете правильное условие соединения и достичь желаемых результатов на этом этапе, попробуйте добавить в агрегации (GROUP BY, MIN, MAX) и проверить, что форма вашего запроса. Наконец, когда вы уверены, что у вас есть правильные входные данные, добавьте DATEDIFF, и у вас будет ваш окончательный запрос.

-1
SELECT SalesOrder.SalesOrderNumber, 
    DATEDIFF (d, MAX(SalesOrder.OrderDate), MAX(Shipment.ShipmentDate)) AS "DaysToShip" 
FROM SalesOrder, Shipment 
GROUP BY SalesOrder.SalesOrderNumber;