[ad_1]
それぞれ異なるカウントを計算する 2 つのサブクエリを含めるように既存のクエリを更新しようとしています。 メイン クエリは単独で正常に実行され、2 つのサブクエリも単独で実行できましたが、それらを結合しようとすると、「キーワードがありません」という構文エラーが発生します。
これが私の主な質問です。 3 つの個別のテーブルから検査データを取得し、検査プログラムが実行されるたびに表示するジョブ番号ごとに要約します。 検査データは、フィーチャ タイプ (穴、Z 軸、またはコーナー) に基づいてさまざまなテーブルに分割されます。 各ジョブ番号の結果は、これら 3 つのテーブルのうちの 1 つだけ、または複数のテーブルで見つけることができます。 このため、メイン クエリに MIN 関数があり、ジョブ番号ごとに 1 つのエントリが作成されることになります。 もう 1 つ注意すべきことは、各テーブルには同じタイプの 1 つ以上のプローブ フィーチャを含めることができ、相違点は異なる場所にあるということです。
SELECT MIN(t.timeofentry) as timeofentry, t.machine, t.tape, t.partnumber, t.spindle, t.jobnumber from ( SELECT timeofentry, machine, tape, partnumber, spindle, jobnumber FROM PROBEVALIDATIONHOLE WHERE HOLENUMBER = 1 AND TIMEOFENTRY between '01/01/2024 12:00:00 AM' and '01/12/2024 11:59:59 PM' and Machine = 'NC-537' UNION SELECT timeofentry, machine, tape, partnumber, spindle, jobnumber FROM PROBEVALIDATIONZAXIS WHERE ZHIT = 1 AND TIMEOFENTRY between '01/01/2024 12:00:00 AM' and '01/12/2024 11:59:59 PM' and Machine = 'NC-537' UNION SELECT timeofentry, machine, tape, partnumber, spindle, jobnumber FROM PROBEVALIDATIONCORNER WHERE TIMEOFENTRY between '01/01/2024 12:00:00 AM' and '01/12/2024 11:59:59 PM' and Machine = 'NC-537' )t GROUP BY t.machine, t.tape, t.partnumber, t.spindle, t.jobnumber ORDER BY timeofentry
これにより、次のようなデータが返されます。
エントリ時間、マシン、テープ、部品番号、スピンドル、ジョブ番号
01/02/2024 11:13:50 PM、NC-537、4479、ABC、LH、75576
01/02/2024 11:25:50 PM、NC-537、4479、ABC、RH、75577
ここで、クエリに 2 つのカウントを追加して、ジョブ番号に対して検査されたフィーチャの合計数と、そのジョブ番号に対して許容範囲外だったフィーチャの合計数の両方を表示したいと思います。 このようなもの:
エントリ時間、マシン、テープ、部品番号、スピンドル、ジョブ番号、失敗、合計
01/02/2024 11:13:50 PM、NC-537、4479、ABC、LH、75576、0、4
01/02/2024 11:25:50 PM、NC-537、4479、ABC、RH、75577、2、4
それぞれのサブクエリを次に示します。 失敗した機能が含まれるジョブでは、すべてのジョブに失敗した機能があるわけではないため、サブクエリが null を返す場合があるため、どこかに COALESCE が必要になると思います。
これには、失敗した機能の数が含まれています。
select jobnumber, sum(fails)as TotalFails from( select jobnumber, count(*) as fails from probevalidationhole where TIMEOFENTRY between '01/01/2024 12:00:00 AM' and '01/12/2024 11:59:59 PM' and Machine = 'NC-537' and (xoutoftol = 'Yes' or youtoftol = 'Yes') group by jobnumber union select jobnumber, count(*) as fails from probevalidationzaxis where TIMEOFENTRY between '01/01/2024 12:00:00 AM' and '01/12/2024 11:59:59 PM' and Machine = 'NC-537' and Zoutoftol = 'Yes' group by jobnumber union select jobnumber, count(*) as fails from probevalidationcorner where TIMEOFENTRY between '01/01/2024 12:00:00 AM' and '01/12/2024 11:59:59 PM' and Machine = 'NC-537' and (xoutoftol = 'Yes' or youtoftol = 'Yes') group by jobnumber) group by jobnumber
これには、機能の合計数が含まれます。
select jobnumber, sum(features)as TotalFeatures from( select jobnumber, count(*) as features from probevalidationhole where TIMEOFENTRY between '01/01/2024 12:00:00 AM' and '01/12/2024 11:59:59 PM' and Machine = 'NC-537' group by jobnumber union select jobnumber, count(*) as features from probevalidationzaxis where TIMEOFENTRY between '01/01/2024 12:00:00 AM' and '01/12/2024 11:59:59 PM' and Machine = 'NC-537' group by jobnumber union select jobnumber, count(*) as features from probevalidationcorner where TIMEOFENTRY between '01/01/2024 12:00:00 AM' and '01/12/2024 11:59:59 PM' and Machine = 'NC-537' group by jobnumber) group by jobnumber
私が試したこと:
「キーワードがありません」という構文エラーが発生したときに私が試していたことは次のとおりです。 最初に全体的な機能を追加してから、失敗した機能を実行しようとしましたが、全体的な機能だけを機能させることができないようです。
SELECT MIN(t.timeofentry) as timeofentry, t.machine, t.tape, t.partnumber, t.spindle, t.jobnumber, TF.totalfeatures from ( SELECT timeofentry, machine, tape, partnumber, spindle, jobnumber FROM PROBEVALIDATIONHOLE WHERE HOLENUMBER = 1 AND TIMEOFENTRY between '01/01/2024 12:00:00 AM' and '01/12/2024 11:59:59 PM' and Machine = 'NC-537' UNION SELECT timeofentry, machine, tape, partnumber, spindle, jobnumber FROM PROBEVALIDATIONZAXIS WHERE ZHIT = 1 AND TIMEOFENTRY between '01/01/2024 12:00:00 AM' and '01/12/2024 11:59:59 PM' and Machine = 'NC-537' UNION SELECT timeofentry, machine, tape, partnumber, spindle, jobnumber FROM PROBEVALIDATIONCORNER WHERE TIMEOFENTRY between '01/01/2024 12:00:00 AM' and '01/12/2024 11:59:59 PM' and Machine = 'NC-537' )t left join (select jobnumber, sum(features)as TotalFeatures from( select jobnumber, count(*) as features from probevalidationhole where TIMEOFENTRY between '01/01/2024 12:00:00 AM' and '01/12/2024 11:59:59 PM' and Machine = 'NC-537' group by jobnumber union select jobnumber, count(*) as features from probevalidationzaxis where TIMEOFENTRY between '01/01/2024 12:00:00 AM' and '01/12/2024 11:59:59 PM' and Machine = 'NC-537' group by jobnumber union select jobnumber, count(*) as features from probevalidationcorner where TIMEOFENTRY between '01/01/2024 12:00:00 AM' and '01/12/2024 11:59:59 PM' and Machine = 'NC-537' group by jobnumber) group by jobnumber) as TF on t.jobnumber = TF.jobnumber GROUP BY t.machine, t.tape, t.partnumber, t.spindle, t.jobnumber, tf.totalfeatures ORDER BY timeofentry
解決策 1
私はそれを考え出した。 愚かなタイプミスでした。 下から4行目に「as TF」とありましたが、単に「TF」にするべきでした。
[ad_2]
コメント