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 :

Ramener une donnée à date t et une autre à t-1 sur une même ligne


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2008
    Messages : 16
    Points : 16
    Points
    16
    Par défaut Ramener une donnée à date t et une autre à t-1 sur une même ligne
    Bonjour à tous,

    Je suis persuadé que la réponse sera simple pour vous ... moi je souffre.

    J'ai une table simple à 2 champs date et montant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    | t+4 | m4 |
    | t+3 | m3 |
    | t+2 | m2 |
    | t+1 | m1 |
    | t   | m  |

    J'aimerais ramener les lignes mises en forme comme suit :
    | t | m | t+1 | m1 |
    | t+2 | m2 | t+1 | m1 |
    | t+3 | m3 | t+2 | m2 |
    | t+4 | m4 | t+3 | m3 |

    J'ai tenté un left join de ma table sur elle même mais le résultat est peu probant.

    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Avec la fonction LEAD :
    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
    With MaTable AS
    (
    select trunc(sysdate) as dt, 'm0' as mt from dual union all
    select trunc(sysdate) + 1  , 'm1'       from dual union all
    select trunc(sysdate) + 2  , 'm2'       from dual union all
    select trunc(sysdate) + 3  , 'm3'       from dual union all
    select trunc(sysdate) + 4  , 'm4'       from dual
    )
    select dt, mt,
           lead(dt) over(order by dt asc) as dt_plus_un,
           lead(mt) over(order by dt asc) as mt_plus_un
      from MaTable;
     
    DT		MT	DT_PLUS_UN	MT_PLUS_UN
    08/01/2010	m0	09/01/2010	m1
    09/01/2010	m1	10/01/2010	m2
    10/01/2010	m2	11/01/2010	m3
    11/01/2010	m3	12/01/2010	m4
    12/01/2010	m4

Discussions similaires

  1. Réponses: 14
    Dernier message: 07/04/2012, 00h16
  2. Réponses: 1
    Dernier message: 23/09/2009, 03h23
  3. transformer une donnée date en char(8) en format date
    Par zaza07 dans le forum SAS Base
    Réponses: 4
    Dernier message: 12/02/2008, 09h23
  4. Réponses: 2
    Dernier message: 23/11/2006, 10h37
  5. Réponses: 13
    Dernier message: 13/09/2006, 21h39

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