私はこのコードを以下に示します。何らかの理由で返されるEstHrsが間違っています。ほとんどの行は正しいですが、返される値は2倍になり、3倍になります。オフになっている値は、複数の値(x2、x3など)だけずれているようです。集計関数が正しく集計されないのはなぜですか?
スケジュール:
JobNo(テキスト)
WorkCntr(テキスト)
OrderRouting:私は
SELECT
s.JobNo,
ROUND(SUM(r.TotEstHrs), 3) AS EstHrs
FROM Scheduling s JOIN OrderRouting r ON s.JobNo = r.JobNo
AND s.WorkCntr = r.WorkCntr
WHERE s.WorkCntr = 'Cutting'
AND r.OrderNo NOT IN ('44444', '77777')
GROUP BY s.JobNo;
間違ったテーブル構造をやっているかわかりません
JobNo(テキスト)
WorkCntr(テキスト)
TotEstHrs(数が)
による可能性が最も高い、あなたは1 OrderRoutingのための複数の行を返す参加すること。私。同じJobNoとWorkCentreを持つ2つのOrderRouting行または2つのScheduling行がある場合、SUMはそれらの2つの列の一致数の倍数になります。可能であれば、主キーで結合してみてください。 – rayzinnz
クエリを簡略化することができます。スケジューリングテーブルを使用せずに解決できるかもしれません。 – hardkoded
スケジューリングテーブルが必要です。 OrderRoutingには完了したものを含むすべてのジョブがあります – user1452574