2017-02-02 5 views
0

Это последующий вопрос мой предыдущий вопрос: sql - min of 9 weeks max of 15 weeks average of 16 weeksSQL - необходимость уточнения «q.type» на кросс/агрегаты для средней/мин/макс

Я получаю «Введите значение параметра q.Type», когда Я исполняю замечательный ответ parfait.

Может кто-нибудь объяснить, почему и как я могу его заменить или указать?

Я не хочу, чтобы вручную ввести значение все время ..

Ниже его код ответа:

Crosstab2 Запрос

TRANSFORM SUM(q.AggDetailQty) 
SELECT q.ItemCode 
FROM UnionAggQuery q 
GROUP BY q.ItemCode 
PIVOT **q.Type** IN ('AVG 16 WEEKS', 'MIN 9 WEEKS', 'MAX 15 WEEKS'); 

UnionAggQ запросов (присоединение оба кросс-таблицы)

Следующая кросс-таблица требует другого запроса как источник, в частности, объединение запросов агрегатов путем с категорическим Артикул метрической колонки:

SELECT Detail.ItemCode, 
     'AVG 16 WEEKS' AS Metric, 
     AVG(Detail.Quantity) AS AggDetailQty 
FROM Detail INNER JOIN Header ON Detail.SalesOrderNo = Header.SalesOrderNo 
WHERE Header.OrderDate >= DATEADD("ww",-16, Date()) 
GROUP BY Detail.ItemCode 

UNION ALL 

SELECT Detail.ItemCode, 
     'MIN 9 WEEKS' AS Metric, 
     MIN(Detail.Quantity) AS AggDetailQty 
FROM Detail INNER JOIN Header ON Detail.SalesOrderNo = Header.SalesOrderNo 
WHERE Header.OrderDate >= DATEADD("ww",-9, Date()) 
GROUP BY Detail.ItemCode 

UNION ALL 

SELECT Detail.ItemCode, 
     'MAX 15 WEEKS' AS Metric, 
     MAX(Detail.Quantity) AS AggDetailQty 
FROM Detail INNER JOIN Header ON Detail.SalesOrderNo = Header.SalesOrderNo 
WHERE Header.OrderDate >= DATEADD("ww",-15, Date()) 
GROUP BY Detail.ItemCode 

Final Запрос

SELECT t1.*, t2.* 
FROM CrossTab1 t1 
INNER JOIN CrossTab2 t2 
ON t1.ItemCode = t2.ItemCode 
+0

Вы должны иметь 'столбец type' в запросе UnionAggQ у вас его нет. Также «Тип» является зарезервированным словом, используйте другое имя или закройте его в квадратных скобках. –

ответ

1

Попробуйте это:

TRANSFORM SUM(q.AggDetailQty) 
SELECT q.ItemCode 
FROM UnionAggQuery q 
GROUP BY q.ItemCode 
PIVOT q.Metric IN ('AVG 16 WEEKS', 'MIN 9 WEEKS', 'MAX 15 WEEKS'); 
+0

Вау! Большое вам спасибо за отличное объяснение :) Это действительно работает! :) Пальцы вверх!! –