それは私の前の質問のためのフォローアップの質問です:私はとき「q.Type
のパラメータ値を入力し、」取得していますsql - min of 9 weeks max of 15 weeks average of 16 weeksSQL - 平均/分のクロス集計/集計上の必要性の明確化「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
あなたは 'type'が列を持っている必要がありますUnionAggQクエリでは、それを持っていません。また、 "タイプ"は予約語で、別の名前を使用するか角かっこで囲みます –