Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 определить customers , которые делали заказы (ordered items ) перед 2006  [new]
DataBinder
Member

Откуда:
Сообщений: 4
Всем доброго времени суток.

Имеется вопрос по AdventureWorks - определить customers , которые делали заказы (ordered items ) перед 2006, но никогда не заказывали в 2006. Показать Customer ID, Product ID and Product Name.
Имеется вот такое решение. Правильно? Как проверить?

use [AdventureWorks2012];
SELECT distinct
SOH.OrderDate,
SOH.CustomerID,
SOD.ProductID,
P.Name AS ProductName
FROM Sales.SalesOrderHeader as SOH
INNER JOIN Sales.SalesOrderDetail as SOD
ON SOH.SalesOrderID = SOD.SalesOrderID
AND SOH.SalesOrderID = SOD.SalesOrderID
INNER JOIN Production.Product as P
ON SOD.ProductID = P.ProductID
WHERE NOT EXISTS
(SELECT *
FROM Sales.SalesOrderHeader as SOH2
WHERE SOH2.CustomerID = SOH.CustomerID
AND ( SOH2.OrderDate >= '20060101' AND SOH2.OrderDate < '20070101')
)
and SOH.OrderDate < '20060101'
ORDER BY SOH.CustomerID, SOD.ProductID;
1 апр 13, 08:20    [14119676]     Ответить | Цитировать Сообщить модератору
 Re: определить customers , которые делали заказы (ordered items ) перед 2006  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31430
DataBinder
Правильно? Как проверить?
Вроде правильно. Только OrderDate зачем выводить, в задании этого нет...

Проверить - запустить :-)
1 апр 13, 09:28    [14119799]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить