Моя задача - написать запрос, который возвращает все заказы для клиента с CustomerID, равным 90, а также общее количество заказов и количество дней с момента предыдущего заказа клиента.
Я должен использовать коррелированный подзапросрассчитать количество дней с момента предыдущего заказа.
Я использую таблицы Sales.Orders и Sales.OrderLines в базе данных образца WideWorldImporters.
Мне нужны столбцы OrderID, OrderDate, OrderTotal и DaysSincePreviousOrder .Последние дни с момента предыдущего заказа для клиента.
Моя попытка найти решение начинает настраивать мой запрос следующим образом:
SELECT
O.OrderID,
O.OrderDate,
ISNULL(SUM(OL.UnitPrice * OL.Quantity), 0.00) AS OrderTotal,
DATEDIFF(DAY,
(
SELECT MAX(OrderDate)
WHERE OrderDate < O.OrderDate
), O.OrderDate) AS DaysSincePreviousOrder
FROM Sales.Orders O
INNER JOIN Sales.OrderLines OL ON OL.OrderID = O.OrderID
AND O.CustomerID = 90
GROUP BY O.OrderID, O.OrderDate, O.CustomerID
ORDER BY O.OrderID;
Я не уверен, как получить дату предыдущего заказа клиентов в коррелированном подзапросе.
Мои первые два результата должны выглядеть так:
**OrderID**--- **OrderDate** ------**OrderTotal** -----**DaysSincePreviousOrder**
1455 -------2013-01-29 -----365.00 --------- NULL
1890 -------2013-02-06 -----915.00 ----------8
Любая помощь будет высоко ценится.