[ad_1]
J’essaie de mettre à jour une requête existante pour inclure 2 sous-requêtes calculant chacune un nombre différent. La requête principale fonctionne correctement toute seule et j’ai pu faire exécuter les 2 sous-requêtes seules. Cependant, lorsque j’essaie de les rejoindre, j’obtiens une erreur de syntaxe “mot clé manquant”.
Voici ma requête principale. Il prend les données d’inspection de 3 tableaux distincts et les résume par numéro de travail pour les afficher à chaque exécution du programme d’inspection. Les données d’inspection sont réparties dans différents tableaux en fonction du type de fonction (trous, axe z ou coin). Les résultats pour chaque numéro d’emploi peuvent être trouvés dans seulement 1 de ces 3 tableaux ou dans plusieurs tableaux. Pour cette raison, c’est pourquoi il y a une fonction MIN dans la requête principale, donc je me retrouve avec une entrée par numéro de travail. Une autre chose à noter est que chaque table peut alors avoir une ou plusieurs fonctionnalités de sonde du même type, la différence étant située à un emplacement différent.
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
Cela renvoie des données telles que :
Heure d’entrée, machine, bande, numéro de pièce, broche, numéro de travail
02/01/2024 23:13:50, NC-537, 4479, ABC, LH, 75576
02/01/2024 23:25:50, NC-537, 4479, ABC, RH, 75577
Je souhaite maintenant ajouter 2 comptes à la requête pour afficher à la fois le nombre total d’entités inspectées pour le numéro de tâche et le nombre total d’entités hors tolérance pour ce numéro de tâche. Quelque chose comme ça:
Heure d’entrée, machine, bande, numéro de pièce, broche, numéro de travail, échec, total
02/01/2024 23:13:50, NC-537, 4479, ABC, LH, 75576, 0, 4
02/01/2024 23:25:50, NC-537, 4479, ABC, RH, 75577, 2, 4
Voici les sous-requêtes pour chacune. Sur celui qui inclut les fonctionnalités défaillantes, je pense que j’aurai besoin d’un COALESCE quelque part car tous les travaux n’ont pas échoué, donc la sous-requête peut parfois renvoyer null.
Celui-ci inclut le nombre de fonctionnalités défaillantes :
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
Celui-ci comprend le nombre total de fonctionnalités :
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
Ce que j’ai essayé :
Voici ce que j’essayais lorsque j’ai eu l’erreur de syntaxe “mot clé manquant”. J’essayais simplement d’ajouter d’abord le total des fonctionnalités, puis de faire les fonctionnalités qui ont échoué, mais je n’arrive pas à faire fonctionner uniquement le total des fonctionnalités.
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
Solution 1
Je l’ai compris. C’était une faute de frappe stupide. Sur la 4ème ligne en partant du bas, j’avais “as TF”, j’aurais dû juste être “TF”
[ad_2]
コメント