2017-02-02 7 views
0

그것은 내 앞의 질문에 대한 후속 질문 : sql - min of 9 weeks max of 15 weeks average of 16 weeksSQL 크로스 탭에 필요 해명 "q.type은"/// 분 평균 최대에 대한 집계는

나는 때 "q.Type의 매개 변수 값 입력"을 받고 있어요 나는 파르페의 굉장한 대답을 실행한다.

이유와 방법을 설명하고 대체 할 수 있습니까?

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 쿼리 (가입 :

내가 수동으로 값을 모든 시간을 입력하지 않으

..

아래는 자신의 코드 답변입니다 두 크로스 탭 모두)

다음 크로스 탭에는 다음과 같은 다른 쿼리가 필요합니다. 소스, 범주 미터 열이 ItemCode으로 집계 특히 통합 쿼리 :

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 

최종 쿼리

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

와우! 훌륭한 설명을 해주셔서 정말 고마워요. :) 작동합니다! :) 위로 엄지! –