2017-08-15 1 views
1

J'ai travaillé avec notre codeur d'un autre bureau par courrier électronique, et nous avons un peu arrêté avec ce code. Je continue d'obtenir des erreurs Oracle chaque fois que j'essaie d'exécuter la requête. Ci-dessous le code que j'utilise:FROM mot-clé non trouvé où attendu Erreur dans SQL

SELECT TALLY_TRAN_MSTR.SHIFT_DT, TALLY_TRAN_MSTR.LOGON_ID, TALLY_TRAN_MSTR.PRI_GRP_CD, 
    SUM(case TALLY_TRAN_MSTR.PRI_GRP_CD 
     WHEN 'PUT' THEN TALLY_TRAN_MSTR.FULL_PLLT_QTY 
     ELSE 0 
     END) AS Puts, 
    SUM(TALLY_TRAN_MSTR.FULL_PLLT_QTY) AS SUM(TALLY_TRAN_MSTR.FULL_PLLT_QTY) 
FROM WBR_RW.TALLY_TRAN_MSTR 
GROUP BY TALLY_TRAN_MSTR.SHIFT_DT, TALLY_TRAN_MSTR.LOGON_ID 
HAVING ((Puts/(SUM(TALLY_TRAN_MSTR.FULL_PLLT_QTY))) > 0.75) 
ORDER BY TALLY_TRAN_MSTR.SHIFT_DT, TALLY_TRAN_MSTR.LOGON_ID; 

Y a-t-il un problème avec cette erreur? Tout commentaire serait apprécié!

+0

Essayez de passer à Puts/Totals) sans 'charaters – user7294900

+2

Je ne vois pas 'CASE' dans la première fonction' SUM() '. N'est-ce pas nécessaire? –

+0

@ StevenK.Mariner Lorsque j'ai fait cela, l'erreur est passée de MIssing Right Parenthesis à "TOTALS": identifiant invalide. – Lampoa

Répondre

2

Va ici, l'effet de levier des alias sweet:

SELECT T.SHIFT_DT, 
     T.LOGIN_ID, 
     T.PRI_GRP_CD, 
     SUM(CASE WHEN T.PRI_GRP_CD = 'PUT' 
       THEN T.FULL_PLLT_QTY 
       ELSE 0 
      END) AS Puts, 
     SUM(T.FULL_PLLT_QTY) AS SUM_PLLT_QTY 
FROM WBR_RW.TALLY_TRAN_MSTR AS T 
GROUP BY T.SHIFT_DT, T.LOGON_ID, T.PRI_GRP_CD 
HAVING (SUM(CASE WHEN T.PRI_GRP_CD = 'PUT' 
       THEN T.FULL_PLLT_QTY 
       ELSE 0 
      END)/SUM(T.FULL_PLLT_QTY)) > .75 
ORDER BY T.SHIFT_DT, T.LOGON_ID; 

Voyez comment cela fonctionne pour vous. Les modifications sont l'alias de la dernière colonne et la clause HAVING étant explicite.