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

PostgreSQL Discussion :

pb avec un case


Sujet :

PostgreSQL

  1. #1
    Membre habitué Avatar de champijulie
    Inscrit en
    Mai 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 147
    Points : 131
    Points
    131
    Par défaut pb avec un case
    Bonjour,

    j'ai un petit problème. Je suis en train de créer une vue avec des case en remplacemant de la fonction decode sous Oracle. Je vous donne la requête concernée:

    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
    CREATE view ddc_appia."VL_DOSSIERDIAETAPEDDC" ("IDDOSSIER", "NOMDOSSIER", "TYPEADS", "DATEDEPOT", "DATEDECISION", "NATUREDECISION", "TYPEDECISION", "GEOREFERENCE", "X", "Y", "ALTITUDE", "REFERENCESCADASTRALES", "DESIGNATIONBIEN") AS (
    Select ddc_appia."DOSSIERDEPOT"."ID_DOSSIER" as "IDDOSSIER", 
    x."NOMDOSSIER", 
    x."CODEADS" as "TypeADS", DD."DATEDEPOT",
    x."DECISIONDATESIGNATURE" as "DateDecision",
    ("DECISIONPREEMPTION", case "DECISIONPREEMPTION" when 1 then varchar 'Favorable' when 0 then varchar 'Défavorable' end) as "NatureDecision",
    ("DECISIONPREEMPTION", case "DECISIONPREEMPTION" when Null then 'Null' else 'Préemption' end) as "TypeDecision",
    DD."PROVENANCE" as "Georeference", 
    DD."X", 
    DD."Y",
    DD."Z" as "Altitude",
    DD."REFERENCESCADASTRALES",
    y."DESIGNATIONBIEN"
    From (ddc_appia."DOSSIERDECISIONDIA"  right outer join ddc_appia."DOSSIER" on ddc_appia."DOSSIER"."ID_DOSSIER" = ddc_appia."DOSSIERDECISIONDIA"."ID_DOSSIER")x , ddc_appia."DOSSIERDEPOT" DD, (ddc_appia."DOSSIERDESCRIPTIONDIA" right outer join ddc_appia."DOSSIER" on ddc_appia."DOSSIER"."ID_DOSSIER" = ddc_appia."DOSSIERDESCRIPTIONDIA"."ID_DOSSIER")y
    Where (ddc_appia."DOSSIER"."ID_DOSSIER" = ddc_appia."DOSSIERDEPOT"."ID_DOSSIER")
    And (x."CODEADS" = 'DA')
    );
    Il me renvoit alors l'erreur suivante:
    column "NATUREDECISION" has pseudo-type record
    Je sais ce que cela veut dire mais je n'arrive malheureusement pas à corriger cette erreur.

    Merci d'avance de ma répondre.
    champijulie.

  2. #2
    Membre habitué
    Inscrit en
    Mai 2002
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 131
    Points : 150
    Points
    150
    Par défaut
    Je ne me rappelle pas de la syntaxe DECODE, mais sous PostgreSQL, tu ne peux pas spécifier deux champs différents et les regrouper en un seul, sans concaténation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ("DECISIONPREEMPTION", case "DECISIONPREEMPTION" when 1 then varchar 'Favorable' when 0 then varchar 'Défavorable' end) as "NatureDecision",
    Dans ton cas, le "DECISIONPREEMPTION", devrait sauter.

  3. #3
    Membre habitué Avatar de champijulie
    Inscrit en
    Mai 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 147
    Points : 131
    Points
    131
    Par défaut
    merci de ta réponse.
    Malheureusement, je ne comprends pas ce que tu veux dire par dossierpreemption devrait sauter ni comment résoudre mon erreur.

    Je te rapelle la syntaxe de decode d'Oracle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    decode(nom_colonne,val1,val2,[val1,val2,...,val_defaut).
    Merci de préciser ta réponse si possible.
    champijulie.

  4. #4
    Membre habitué
    Inscrit en
    Mai 2002
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 131
    Points : 150
    Points
    150
    Par défaut
    Je parlais de la partie avant le CASE, à l'intérieur de la parenthèse, en fait. Désolé, c'était pas clair

    Ce qui donnerait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (case "DECISIONPREEMPTION" when 1 then varchar 'Favorable' when 0 then varchar 'Défavorable' end) as "NatureDecision",

  5. #5
    Membre habitué Avatar de champijulie
    Inscrit en
    Mai 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 147
    Points : 131
    Points
    131
    Par défaut
    Maintenant ça marche .
    Merci beaucoup.
    Ca va me permettre de bien avancer .
    champijulie.

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

Discussions similaires

  1. Probleme avec Select Case
    Par GeffD dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 07/03/2005, 15h28
  2. Pb avec les cases à cocher
    Par magic8392 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 03/03/2005, 16h49
  3. Pb avec les cases à cocher
    Par magic8392 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 03/03/2005, 13h44
  4. Vues avec des "case"
    Par jfphan dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/01/2005, 12h17
  5. [C#][débutant] Probleme avec un case
    Par Le Basque dans le forum Windows Forms
    Réponses: 2
    Dernier message: 13/01/2005, 12h45

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