У меня есть этот 4 таблицы:SQL запросов с группой По утверждению
Менеджеры, Продажи, SaleDetails, продукты:
- Менеджеры: ID, имя
- Sales: ID, ManagerID , SaleNO, SaleDate
- ПродажаДетали: ID, ПродажаID, ProductID, Количество
- Продукты: ID, имя, Цена
Я хочу retrive для каждого менеджера: SaleDate и уникальный продукт рассчитывать;
Моего выберите выглядит следующим образом:
;WITH cte
AS
(
SELECT sd.SaleID, sd.ProductID FROM dbo.Products p
INNER JOIN dbo.SalesDetails sd ON sd.ProductID = p.ID
GROUP BY sd.SaleID, sd.ProductID
)
SELECT
c.Name AS ManagerName
,s.SaleDate
,COUNT(ct.ProductID) AS ProductCount
FROM cte ct
INNER JOIN dbo.Sales s ON ct.SaleID = s.ID
INNER JOIN dbo.Managers c ON c.ID = s.ConsultantID
GROUP BY s.SaleDate, c.Name
Является ли это оптимальный? Можете ли вы помочь моему, чтобы заменить его более оптимальным запрос
- Менеджеров: [ID = 1, Name = John;]
- продаж: [ID = 1, ManagerID = 1, SaleNO = 0015, SaleDate: 2016 -09-08], [ID = 2, ManagerID = 1, SaleNO = 0016, SaleDate: 2016-09-09]
- ПродажаДетали: [ID = 1, SaleID = 1, ProductID = 1, Quantity = 2], [ID = 2, SaleID = 1, ProductID = 1, Quantity = 4], [ID = 3, SaleID = 1, ProductID = 2, Quantity = 3], [ID = 4, SaleID = 2, ProductID = 1, количество = 3]
- Продукт: [ID = 1, имя = Sony], [ID = 2, имя = Samsung]
Запрос должен возвращать результаты:
- ManagerName = Джон, SaleDate = 2016-09-08, ProductCount = 2
- ManagerName = Джон, SaleDate = 2016-09-09, ProductCount = 1
Работает ли ваш запрос, и вы просите альтернативу? Если вы правильно настроили индексы, эти объединения могут работать довольно эффективно. –
yes Я хочу написать альтернативный запрос. этот запрос работает – www1986
@ www1986 Можете ли вы отправить данные и ожидаемый результат? –