2012-03-28 3 views
2

Привет ребята У меня есть небольшая проблема с моей SQL кода я должен только отображения данных в базе данных, которая находится в августе месяце 2008 годаsql server, как отображать данные, которые находятся в месяце августа?

мой код до сих пор это

я должен показать продажи каждого человека продаж в августе месяце 2008

ВЫБРАТЬ p.BusinessEntityID, p.FirstName, p.LastName, ROUND (SUM (soh.TotalDue), 2) AS 'Total Приписываемые Sales' от человека .Person p, Sales.SalesPerson s, Sales.SalesOrderHeader soh WHERE p.BusinessEntityID = s.BusinessEntityID И p.BusinessEntityID = soh.SalesPersonID И soh.OrderDate> = '2008' И soh.OrderDate < '2009' GROUP BY p.BusinessEntityID, P.FirstName, P.LastName ORDER BY p.LastName

у меня есть изображение моей базы данных
http://www.2shared.com/photo/h2-jMQyP/AdventureWorks2008.html

+0

Какова структура ваших таблиц? У вас есть столбец с датой? или столбцы с годом и месяцем? –

+0

Нам нужна немного больше информации о вашей базе данных, я бы предположил, что в таблице [Sales] вы храните дату какого-то рода? где хранится дата, которую вы собираетесь фильтровать? и какой формат он хранится? – kamui

+0

@ Uriel_SVK, @kamui , пожалуйста, проверьте отредактированную версию моего вопроса – user1297398

ответ

2

вы можете попробовать это:

SELECT DISTINCT p.BusinessEntityID,p.FirstName,p.LastName 
FROM Person.Person p INNER JOIN Sales.SalesPerson s 
    ON p.BusinessEntityID = s.BusinessEntityID 
WHERE MONTH(p.your_date) = 8 
    AND YEAR(p.your_date) = 2008 

Просто примечание: когда вы должны присоединиться таблицы использовать JOIN заявление вместо WHERE; SQL-код здесь понимает, что вы присоединяетесь к таблицам и конвертируете план выполнения, чтобы использовать JOIN, но в других ситуациях вы рискуете делать табличные декартовы продукты, делая ваш запрос действительно огромным!

+0

Пожалуйста, ознакомьтесь с моим отредактированным вопросом – user1297398

1

Глядя на вашу структуру базы данных, если вы хотите получить продаж для конкретного человека, которого вы, возможно, придется добавить ссылку в SalesOrderHeader а

EDIT 2: Небольшое изменение в сценарий получит общий объём всех продаж для всех продавцов в августе 2008 года

SELECT p.BusinessEntityID,p.FirstName,p.LastName, SUM(soh.TotalDue) 
FROM Person.Person p , Sales.SalesPerson s,Sales.SalesOrderHeader soh 

WHERE p.BusinessEntityID = s.BusinessEntityID 
AND s.BusinessEntityID = soh.BusinessEntityID 

AND MONTH(soh.OrderDate) = 8 
AND YEAR(soh.OrderDate) = 2008 
GROUP BY p.BusinessEntityID 
+0

@ kamui hey bro мой вопрос: Напишите запрос, чтобы узнать общий атрибут продаж для каждого продавца для всех размещенных SalesOrders в 2008 году. Используйте TotalDue заказов, чтобы найти суммы продаж и SalesPersonID, чтобы найти агента по продажам. Например. SalesOrderID 43659 следует отнести к SalesPersonID 279. – user1297398

+0

@kumui не работает человек – user1297398

+0

@ kamui Я должен получить 17 строк, вместо этого я получаю только 10 строк, а цифры продаж ошибочны – user1297398