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

Outils SQL Server Discussion :

Ne pas afficher les doublons


Sujet :

Outils SQL Server

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Ne pas afficher les doublons
    Bonjour.
    Je recherche une requête, si elle existe, afin de ne pas afficher les doublons.
    J'ai une vue dans laquelle j'ai :

    Prenom Dateval Lieu
    Jean 01.01.1999 Paris
    Jean 01.04.2000 Lyon
    Chris 01.05.2000 Marseille
    Jean 01.06.2002 La Rochelle
    Chris 01.07.2002 Lyon
    Jean 02.08.2003 Lyon
    Jean 04.06.2005 Marseille
    Jean 05.09.2006 Paris
    Jean 06.08.2007 Paris
    Jean 07.02.2008 Paris
    Jean 10.03.2009 Lyon

    Je souhaiterais supprimer deux informations identiques qui se suivent (date) et
    obtenir :

    Prenom Dateval lieu
    Jean 01.01.1999 Paris
    Jean 01.04.2000 Lyon
    Jean 01.06.2002 La Rochelle
    Jean 02.08.2003 Lyon
    Jean 04.06.2005 Marseille
    Jean 05.09.2006 Paris
    Jean 10.03.2009 Lyon


    J'ai essayé diverses combinaisons de "group by" en vain.

    Merci de votre aide.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Points : 1 216
    Points
    1 216
    Par défaut
    je pense que tu veux :

    prenom,MIN(dateval),lieu
    ...
    group by Prenom, lieu
    Emmanuel T.

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Effectivement.

    Mais si je fais un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select distinct 
    prenom,min(dateval),lieu
    from MA_VUE
    where prenom = Jean
    group by lieu, prenom
    order by 2 asc
    j'obtiens :

    Prenom Dateval Lieu
    Jean 01.01.1999 Paris
    Jean 01.04.2000 Lyon
    Jean 01.06.2002 La Rochelle
    Jean 02.08.2003 Lyon
    Jean 04.06.2005 Marseille


    Il me manque :

    Jean 05.09.2006 Paris
    Jean 10.03.2009 Lyon

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Essayez ainsi :
    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
    With MaTable (Prenom, Dateval, Lieu) AS
    (
    select 'Jean' , convert(datetime, '01.01.1999', 104), 'Paris'       union all
    select 'Jean' , convert(datetime, '01.04.2000', 104), 'Lyon'        union all
    select 'Chris', convert(datetime, '01.05.2000', 104), 'Marseille'   union all
    select 'Jean' , convert(datetime, '01.06.2002', 104), 'La Rochelle' union all
    select 'Chris', convert(datetime, '01.07.2002', 104), 'Lyon'        union all
    select 'Jean' , convert(datetime, '02.08.2003', 104), 'Lyon'        union all
    select 'Jean' , convert(datetime, '04.06.2005', 104), 'Marseille'   union all
    select 'Jean' , convert(datetime, '05.09.2006', 104), 'Paris'       union all
    select 'Jean' , convert(datetime, '06.08.2007', 104), 'Paris'       union all
    select 'Jean' , convert(datetime, '07.02.2008', 104), 'Paris'       union all
    select 'Jean' , convert(datetime, '10.03.2009', 104), 'Lyon'
    )
      ,  SR (Prenom, Dateval, Lieu, grp_id) AS
    (
    select Prenom, Dateval, Lieu,
           row_number() over(partition by Prenom       order by Dateval asc) -
           row_number() over(partition by Prenom, Lieu order by Dateval asc) as grp_id
      from MaTable
    )
      select Prenom, min(Dateval) as Dateval, Lieu
        from SR
    group by Prenom, Lieu, grp_id
    order by Dateval asc;
     
    Prenom Dateval      Lieu
    ------ ------------ -----------
    Jean   01.01.1999   Paris
    Jean   01.04.2000   Lyon
    Chris  01.05.2000   Marseille
    Jean   01.06.2002   La Rochelle
    Chris  01.07.2002   Lyon
    Jean   02.08.2003   Lyon
    Jean   04.06.2005   Marseille
    Jean   05.09.2006   Paris
    Jean   10.03.2009   Lyon

  5. #5
    Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Malheureusement j'ai un message :

    ORA-32033 :unsupported column aliasing.

    J'ai bien essayé de modifier le nom de ma colonne, en vain.

    Je vais refaire des tests avec votre méthode.

    Merci encore

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Oui mais si vous postez des questions Oracle dans le forum Microsoft SQL Server, il ne faut pas non plus s'attendre à des miracles.

    En l'occurence, vous avez quand même de la chance, il suffit de descendre les alias de colonne de la CTE vers la requête :
    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
    WITH MaTable AS
    (
    SELECT 'Jean' as Prenom, to_date('01.01.1999', 'dd.mm.yyyy') as Dateval, 'Paris' as Lieu from dual union ALL
    SELECT 'Jean'          , to_date('01.04.2000', 'dd.mm.yyyy')           , 'Lyon'          from dual union ALL
    SELECT 'Chris'         , to_date('01.05.2000', 'dd.mm.yyyy')           , 'Marseille'     from dual union ALL
    SELECT 'Jean'          , to_date('01.06.2002', 'dd.mm.yyyy')           , 'La Rochelle'   from dual union ALL
    SELECT 'Chris'         , to_date('01.07.2002', 'dd.mm.yyyy')           , 'Lyon'          from dual union ALL
    SELECT 'Jean'          , to_date('02.08.2003', 'dd.mm.yyyy')           , 'Lyon'          from dual union ALL
    SELECT 'Jean'          , to_date('04.06.2005', 'dd.mm.yyyy')           , 'Marseille'     from dual union ALL
    SELECT 'Jean'          , to_date('05.09.2006', 'dd.mm.yyyy')           , 'Paris'         from dual union ALL
    SELECT 'Jean'          , to_date('06.08.2007', 'dd.mm.yyyy')           , 'Paris'         from dual union ALL
    SELECT 'Jean'          , to_date('07.02.2008', 'dd.mm.yyyy')           , 'Paris'         from dual union ALL
    SELECT 'Jean'          , to_date('10.03.2009', 'dd.mm.yyyy')           , 'Lyon'          from dual
    )
      ,  SR AS
    (
    SELECT Prenom, Dateval, Lieu,
           row_number() over(partition BY Prenom       ORDER BY Dateval ASC) -
           row_number() over(partition BY Prenom, Lieu ORDER BY Dateval ASC) AS grp_id
      FROM MaTable
    )
      SELECT Prenom, min(Dateval) AS Dateval, Lieu
        FROM SR
    GROUP BY Prenom, Lieu, grp_id
    ORDER BY Dateval ASC;

  7. #7
    Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Oups, erreur de nul ...
    Merci pour les infos, je vais faire mes tests tout de suite.

    Pour le prochain post, j'irais sur le bon forum.


    merci encore pour l'aide

Discussions similaires

  1. Ne pas afficher les doublons dans mon rapport
    Par shallum dans le forum Jasper
    Réponses: 6
    Dernier message: 06/01/2010, 17h10
  2. Réponses: 2
    Dernier message: 21/04/2009, 21h10
  3. ne pas afficher les doublons
    Par zangel dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 05/10/2008, 18h06
  4. Réponses: 6
    Dernier message: 25/04/2008, 12h44
  5. ne pas afficher les doublons
    Par axamen dans le forum SQL
    Réponses: 17
    Dernier message: 23/05/2007, 13h45

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