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 :

Gérer les tuples dans une vue


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Homme Profil pro
    Intégrateur d'exploitation
    Inscrit en
    Avril 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2014
    Messages : 17
    Points : 14
    Points
    14
    Par défaut Gérer les tuples dans une vue
    Bonjour,

    je n'arrive pas à en SQL à extraire d'une table la dernière écriture pour un groupe de champ donnés.
    Je suis sous Oracle 11.

    Ma table contient une liste d'évènement, classé par date. Ma vue doit consister à récupérer pour chaque groupe unique (champs app_save/hostname/upm) le dernier status (decode sur le champ poids, OK ou KO).
    J'y arrive presque mais à cause du champ poids dans mon group by je peux avoir des tuples dans mon résultat.

    Ma vue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select app_save instance_oracle, max(exec_date) last_update, substr(upm,5,length(upm)) metier, decode(poids,0,'TSMSAVOK','TSMSAVECH') code, i.hostname serveur
    from instances i
    inner join serveurs s on i.hostname = s.hostname
    where type_save = 'archive_oracle'
    and gestion_bt is not null
    group by upm,i.hostname,app_save,poids
    order by last_update desc;

    Le résultat que ça me rend :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    P01559AP10	23/05/16	FGAT	TSMSAVOK	parva7111047
    TBO4FRP0	23/05/16	FGAT	TSMSAVOK	parva7118330
    P03580AP10	23/05/16	UPSI	TSMSAVOK	s00va9939197
    DDB1FRP0	23/05/16	BDDF	TSMSAVOK	parva7214145
    TSD7FRP0	23/05/16	FGAT	TSMSAVOK	parva7409892
    TSD9FRP0	23/05/16	FGAT	TSMSAVOK	parva7409892
    ATE1EUP0	23/05/16	PF	TSMSAVOK	s00va9931372
    GGA1FRP2	23/05/16	BDDF	TSMSAVOK	s00va9922872
    STN3FRP0	23/05/16	FGAT	TSMSAVOK	parva7111047
    Mais aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ABE1FRB0	09/06/15	FGAT	TSMSAVECH	parva7421106
    ABE1FRB0	23/05/16	FGAT	TSMSAVOK	parva7421106
    Sauf que moi je n'aimerais avoir que la dernière ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ABE1FRB0	23/05/16	FGAT	TSMSAVOK	parva7421106
    J'ai bien la solution de créer une autre table que je chargerais à la main et grâce à un trigger je peuplerais le champ "code" et last_update, mais j'aimerais vraiment passer par une vue si seulement c'est possible.

    Si vous avez des pistes, je suis preneur

    Bien à vous,

    CH

  2. #2
    Membre à l'essai
    Homme Profil pro
    Intégrateur d'exploitation
    Inscrit en
    Avril 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2014
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Auto-réponse :
    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
     
      SELECT i.APP_SAVE instance_oracle,
      MAX(i.EXEC_DATE) last_update,
      SUBSTR(s.UPM, 5, LENGTH(s.UPM)) metier,
      DECODE(i.POIDS, 0, 'TSMSAVOK', 'TSMSAVECH') code,
      i.HOSTNAME serveur
    FROM instances i
    INNER JOIN serveurs s
    ON i.HOSTNAME     = s.HOSTNAME
    WHERE i.TYPE_SAVE = 'archive_oracle'
    AND s.GESTION_BT IS NOT NULL
    AND i.id = (SELECT MAX(j.id) FROM instances j WHERE j.hostname = i.hostname AND j.app_save = i.app_save AND j.type_save = i.type_save)
    GROUP BY i.APP_SAVE,
      DECODE(i.POIDS, 0, 'TSMSAVOK', 'TSMSAVECH'),
      i.HOSTNAME,
      s.UPM
    ORDER BY MAX(i.EXEC_DATE) DESC;

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/05/2007, 16h50
  2. [MCD] gérer les listes dans une entité
    Par H1B4K dans le forum Schéma
    Réponses: 7
    Dernier message: 09/10/2006, 18h12
  3. [VB6]Gérer les espaces dans une command FTP
    Par ShortcutZ dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 24/07/2006, 21h28
  4. [SWT] centrer les composants dans une vue
    Par LoloBebop dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 07/06/2006, 10h34
  5. gérer les jpg dans une fenetre directdraw???
    Par Anonymous dans le forum DirectX
    Réponses: 1
    Dernier message: 14/06/2002, 13h39

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