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

MS SQL Server Discussion :

sélection des dernières données


Sujet :

MS SQL Server

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 8
    Points : 6
    Points
    6
    Par défaut sélection des dernières données
    Bonjour,

    je travaille sur SQL Server 2005. J'ai une table qui contient des historiques de changement de données mises à jour chaque semaine. Ces données concernent des clients. pour chaque client il peut y avoir plusieurs changement donc plusieurs lignes à des dates différentes. ce qui m'intéresserait c'est de récupérer le dernier changement concernant le client dans le mois.

    voici mes champs :
    id_cli, valeur_avant, valeur_apres, date

    merci d'avance

  2. #2
    Membre chevronné

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Points : 1 758
    Points
    1 758
    Par défaut
    Hello,

    Vous pouvez tenter ceci:
    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
    with LastClientRow (id_cli, [date])
    as
    (
    select id_cli, MAX([date])
    from MaTable
    group by id_cli
    )
    select 
    	id_cli, 
    	valeur_avant, 
    	valeur_apres, 
    	[date]
    from 
    	MaTable
    join LastClientRow 
    	on MaTable.id_cli = LastClientRow.id_cli
    	and MaTable.[date] = LastClientRow.[date]

  3. #3
    Futur Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    merci pour la réponse

    j'ai essayé mais il m'envoie un message d'erreur :
    "Msg*209, Niveau*16, État*1, Ligne*9
    Nom de colonne 'code_client' ambigu.
    Msg*209, Niveau*16, État*1, Ligne*12
    Nom de colonne 'date_modif' ambigu.
    ",

    j'ai essayé d'utiliser des alias mais ça marche pas.

  4. #4
    Membre chevronné

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Points : 1 758
    Points
    1 758
    Par défaut
    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
     
    WITH LastClientRow (id_cli, [date])
    AS
    (
    SELECT id_cli, MAX([date])
    FROM MaTable
    GROUP BY id_cli
    )
    SELECT 
    	MaTable.id_cli, 
    	valeur_avant, 
    	valeur_apres, 
    	MaTable.[date]
    FROM 
    	MaTable
    JOIN LastClientRow 
    	ON MaTable.id_cli = LastClientRow.id_cli
    	AND MaTable.[date] = LastClientRow.[date]

  5. #5
    Futur Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    merci beaucoup,

    la requête fonctionne mais j'ai remarqué qu'il ne prend que la dernière dernière date
    j'aimerais qu'il ne prenne que la dernière date pour chaque mois de chaque année pour chaque client

  6. #6
    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
    Rajoutez l'expression suivante dans le GROUP BY de LastClientRow :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    convert(varchar(6), [date], 112)

  7. #7
    Futur Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    merci beaucoup pour votre aide,

    voici la solution pour avoir mes données par client et par mois j'ai rajouté une colonne periode à partir du mois et de l'année:

    WITH LastClientRow (code_cli, periode, date)
    AS
    (
    SELECT code_cli, periode, MAX(date)
    FROM matable
    GROUP BY code_cli, periode
    )
    SELECT
    matable.code_cli,
    devact,
    devinact,
    matable.date
    FROM
    matable
    JOIN LastClientRow
    ON matable.code_cli = LastClientRow.code_cli
    AND matable.date = LastClientRow.date

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

Discussions similaires

  1. Requête Affichage Des Dernières Données pour une Dernière Date
    Par Dr_No dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 22/10/2009, 18h48
  2. [AC-2003] Moyenne des dernières données
    Par Christian78 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 25/06/2009, 21h55
  3. [MySQL] sélection des dernières lignes avec affichage aléatoire
    Par nabmoah dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 08/08/2008, 23h57
  4. [MySQL] Sélection des dernières lignes d'une table
    Par Civet dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 25/04/2007, 15h06
  5. Requete de sélection des 5 dernièrs entrées.
    Par WriteLN dans le forum Administration
    Réponses: 4
    Dernier message: 22/03/2004, 21h40

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