誰でも以下の理由でコンパイルできないと教えてもらえますか?SQL SUMを超えて区切りを計算するグループの%を計算する
'M3'マークされたトランザクションがバッチ全体の何%であるかを計算しようとしています。
バッチが1つだけあれば簡単だと思いますが、複数のバッチがあることもあります。
全体のコードは以下の通りです:
SELECT
[Batch],
[DocNum],
[Date],
[Time],
[Location],
[ItemCode],
[Brand],
[Quantity],
CASE
WHEN [Variance] IS NULL
THEN ''
ELSE [Variance]
END AS [Variance],
CASE
WHEN [Comments] IS NULL
THEN ''
ELSE [Comments]
END AS [Comments],
CASE
WHEN [Variance] = 'M3'
THEN(
(
(SELECT
ABS([Quantity])
FROM #BatchReport
WHERE [Variance] = 'M3')
/
(SELECT
SUM([Quantity])
FROM #BatchReport
WHERE [Quantity] > 0)
) * 100) OVER (PARTITION BY [Batch])
ELSE '0'
END AS [Pct Loss],
SUM([Quantity]) OVER (PARTITION BY [Batch]) AS [Difference],
((SUM([Quantity]) - MAX([Quantity])) * 100)/MAX([Quantity]) OVER (PARTITION BY [Batch]) AS [Pct Difference]
FROM #BatchReport
WHERE [DocNum] IS NOT NULL
GROUP BY [Batch], [DocNum], [Date], [Time], [Variance], [Brand], [Comments], [Quantity], [Location], [ItemCode]
ORDER BY [Batch], [Date], [Time]
エラーテキスト:私はしようとしているもののような何かの
CASE
WHEN [Variance] = 'M3'
THEN(
(
(SELECT
ABS([Quantity])
FROM #BatchReport
WHERE [Variance] = 'M3')
/
(SELECT
SUM([Quantity])
FROM #BatchReport
WHERE [Quantity] > 0)
) * 100) OVER (PARTITION BY [Batch])
ELSE '0'
END AS [Pct Loss]
サンプル:私はこの部分を削除した場合Incorrect syntax near the keyword 'OVER'.
ありがとう!
よくお答えするために、エラーメッセージを投稿することができます – Lamak
申し訳ありませんが、私は質問 – coblenski