[ad_1]
Saya mencoba memperbarui kueri yang ada untuk memasukkan 2 subkueri yang masing-masing menghitung jumlah berbeda. Kueri utama berjalan dengan baik dengan sendirinya dan saya bisa menjalankan 2 subkueri sendiri, namun, ketika saya mencoba menggabungkannya, saya mendapatkan kesalahan sintaksis “kata kunci hilang”.
Inilah pertanyaan utama saya. Dibutuhkan data inspeksi dari 3 tabel terpisah dan merangkumnya berdasarkan nomor pekerjaan untuk ditampilkan setiap kali program inspeksi dijalankan. Data inspeksi dibagi menjadi beberapa tabel berbeda berdasarkan jenis fitur (lubang, sumbu, atau sudut). Hasil untuk setiap nomor pekerjaan dapat ditemukan hanya di 1 dari 3 tabel ini atau beberapa tabel. Karena itu, itulah mengapa ada fungsi MIN di kueri utama sehingga saya mendapatkan satu entri per nomor pekerjaan. Hal lain yang perlu diperhatikan adalah setiap tabel kemudian dapat memiliki satu atau lebih fitur probe dari jenis yang sama dengan perbedaannya berada di lokasi yang berbeda.
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
Ini mengembalikan data seperti:
Waktu Masuk, Mesin, Pita, Nomor Bagian, Spindel, Nomor Pekerjaan
01/02/2024 23:13:50, NC-537, 4479, ABC, LH, 75576
01/02/2024 23:25:50, NC-537, 4479, ABC, RH, 75577
Sekarang saya ingin menambahkan 2 hitungan ke kueri untuk menunjukkan jumlah total fitur yang diperiksa untuk nomor pekerjaan dan jumlah total fitur yang di luar toleransi untuk nomor pekerjaan tersebut. Sesuatu seperti ini:
Waktu Masuk, Mesin, Pita, Nomor Bagian, Spindel, Nomor Pekerjaan, Gagal, Total
02/01/2024 23:13:50, NC-537, 4479, ABC, LH, 75576, 0, 4
01/02/2024 23:25:50, NC-537, 4479, ABC, RH, 75577, 2, 4
Berikut adalah subkueri untuk masing-masingnya. Pada salah satu yang menyertakan fitur yang gagal, saya pikir saya akan memerlukan COALESCE di suatu tempat karena tidak setiap pekerjaan memiliki fitur yang gagal sehingga subquery terkadang mengembalikan null
Yang ini mencakup sejumlah fitur yang gagal:
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
Yang ini mencakup jumlah total fitur:
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
Apa yang saya coba:
Inilah yang saya coba ketika saya mendapat kesalahan sintaksis “kata kunci hilang”. Saya hanya mencoba menambahkan fitur total terlebih dahulu dan kemudian melakukan fitur yang gagal, tetapi sepertinya saya tidak bisa membuat fitur total saja berfungsi.
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
Solusi 1
Saya menemukan jawabannya. Itu salah ketik yang bodoh. Pada baris ke 4 dari bawah saya punya “as TF”, seharusnya hanya “TF”
[ad_2]
コメント