IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Nom de table invalide aprés deux clauses WITH


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 9
    Points : 11
    Points
    11
    Par défaut Nom de table invalide aprés deux clauses WITH
    Bonjour,

    Après avoir rajouter une deuxième clause With dans ma requête afin de pouvoir stocker un calcul, pour ensuite faire une comparaison dessus, j'obtiens un message d'erreur lorsque je l'enregistre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    WITH
     
    FACPRI AS (SELECT 
     
    SOCIETE, SITE, DATFAC, NUMFAC, DEVISE, BPCCODE, CLIENT, ITEM, DES1, DES2, DESBPC, PRIHT, NUMCOM, COMCLI, DATCOM, NUMLIV, DATEXP, QTY, UOM, PRIX1, PRIX2
     
    FROM
     
    (SELECT
     
    SIH.CPY_0 AS SOCIETE,
    SIH.FCY_0 AS SITE,
    SIH.ACCDAT_0 AS DATFAC,
    SIH.NUM_0 AS NUMFAC,
    SIH.CUR_0 AS DEVISE,
    SID.BPCINV_0 AS BPCCODE,
    BPR.BPRNAM_0 AS CLIENT,
    SID.ITMREF_0 AS ITEM,
    SID.ITMDES_0 AS DES1,
    SID.ITMDES1_0 AS DES2,
    ITU.ITMREFBPC_0 AS DESBPC,
    SID.GROPRI_0 AS PRIHT,
    SID.SOHNUM_0 AS NUMCOM,
    SOH.CUSORDREF_0 AS COMCLI,
    SOQ.ORDDAT_0 AS DATCOM,
    SID.SDHNUM_0 AS NUMLIV,
    SDD.SHIDAT_0 AS DATEXP,
    SDD.QTY_0 AS QTY,
    SDD.SAU_0 AS UOM,
    (SELECT MIN(SPL.PRI_0) FROM SPRICLIST SPL WHERE SIH.CPY_0 = SPL.PLICRI1_0 
    AND SIH.CUR_0 = SPL.CUR_0 
    AND SID.ITMREF_0 = SPL.PLICRI2_0 
    AND SDD.BPCORD_0 = SPL.PLICRI3_0 
    AND SDD.BPAADD_0 = SPL.PLICRI4_0 
    AND SIH.ACCDAT_0 >= SPL.PLISTRDAT_0 
    AND SIH.ACCDAT_0 <= SPL.PLIENDDAT_0 
    AND SID.QTY_0 >= SPL.MINQTY_0 
    AND SID.QTY_0 <= SPL.MAXQTY_0
    AND SPL.PLI_0 = 'NIEF01') AS PRIX1,
    (SELECT MIN(SPL1.PRI_0) FROM SPRICLIST SPL1 WHERE SIH.CPY_0 = SPL1.PLICRI1_0 
    AND SIH.CUR_0 = SPL1.CUR_0 
    AND SID.ITMREF_0 = SPL1.PLICRI2_0 
    AND SDD.BPCORD_0 = SPL1.PLICRI3_0 
    AND SIH.ACCDAT_0 >= SPL1.PLISTRDAT_0
    AND SIH.ACCDAT_0 <= SPL1.PLIENDDAT_0
    AND SID.QTY_0 >= SPL1.MINQTY_0
    AND SID.QTY_0 <= SPL1.MAXQTY_0
    AND SPL1.PLI_0 = 'NIEF02') AS PRIX2
     
    FROM
     
    SINVOICED SID
    JOIN SINVOICE SIH ON SID.NUM_0 = SIH.NUM_0
    JOIN BPARTNER BPR ON SID.BPCINV_0 = BPR.BPRNUM_0
    LEFT OUTER JOIN SORDERQ SOQ ON SID.SOHNUM_0 = SOQ.SOHNUM_0 AND SID.SOPLIN_0 = SOQ.SOPLIN_0 AND SID.SOQSEQ_0 = SOQ.SOQSEQ_0
    LEFT OUTER JOIN SORDER SOH ON SID.SOHNUM_0 = SOH.SOHNUM_0
    LEFT OUTER JOIN ITMBPC ITU ON SOQ.BPCORD_0 = ITU.BPCNUM_0 AND SOQ.ITMREF_0 = ITU.ITMREF_0
    LEFT OUTER JOIN SDELIVERYD SDD ON SID.SDHNUM_0 = SDD.SDHNUM_0 AND SID.SDDLIN_0 = SDD.SDDLIN_0
     
    WHERE
     
    SIH.CPY_0 BETWEEN %1% AND %2% AND
    SIH.FCY_0 BETWEEN %3% AND %4% AND
    SIH.ACCDAT_0 BETWEEN %5% AND %6%
     
    )),
     
    RESULT AS (
     
    SELECT SOCIETE, SITE, DATFAC, NUMFAC, DEVISE, BPCCODE, CLIENT, ITEM, DES1, DES2, DESBPC, PRIHT, NUMCOM, COMCLI, DATCOM, NUMLIV, DATEXP, QTY, UOM, PRIX1, PRIX2,
    CASE 
    WHEN (PRIX1>0 AND PRIX2>0 AND PRIX1<PRIX2 AND PRIX1<>PRIHT) THEN ((PRIX1-PRIHT)*QTY)
    WHEN (PRIX1>0 AND PRIX1 <> PRIHT) THEN ((PRIX1-PRIHT)*QTY)
    WHEN (PRIX2>0 AND PRIX2 <> PRIHT) THEN ((PRIX2-PRIHT)*QTY)
    ELSE 0
    END AS MNTREGUL
     
    FROM FACPRI),
     
    SELECT SOCIETE, SITE, DATFAC, NUMFAC, DEVISE, BPCCODE, CLIENT, ITEM, DES1, DES2, DESBPC, PRIHT, NUMCOM, COMCLI, DATCOM, NUMLIV, DATEXP, QTY, UOM, PRIX1, PRIX2, MNTREGUL
    FROM RESULT
    WHERE MNTREGUL <> 0


    Si j'utilise pas mon deuxième WITH, et que je passe par select ça marche. Mais après je ne sais comment mettre un critère sur le résultat de mon CASE.

    Merci pour votre aide par avance,

    pyth

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 801
    Points
    30 801
    Par défaut
    Ce qui serait intéressant pour pouvoir t'aider à corriger ta requête, ce serait que tu nous donnes aussi le message d'erreur
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Pas de virgule à la fin de la dernière CTE

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    Pardon,

    ORA-00903 : invalide table name

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par skuatamad Voir le message
    Pas de virgule à la fin de la dernière CTE
    La loose...
    merci bcp

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/04/2010, 08h10
  2. [CR 9] Nom de table pas mis à jour après changement de la source de données
    Par zodeno dans le forum Connectivité
    Réponses: 3
    Dernier message: 29/09/2009, 13h36
  3. Réponses: 10
    Dernier message: 12/03/2007, 12h06
  4. Réponses: 4
    Dernier message: 10/05/2006, 18h40
  5. Urgent - après la migration - les tables "Invalid Objet
    Par nnn2050 dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 27/12/2005, 10h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo