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

Langage SQL Discussion :

Créer un compteur par groupe t-sql


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 169
    Points : 76
    Points
    76
    Par défaut Créer un compteur par groupe t-sql
    Bonjour,
    je souhaite mettre en place une procédure en t-sql:
    j'ai une table avec 2 champs tous du varchar.Le 2ème champ ( key) est le résultat attendu : pour tous les champs "id" en doublons , le concaténer avec '_'+ générer un compteur par chaque doublon "id" comme l'indique le champs "key" (qui est null au départ) .Merci
    id	 key
    xxx	 xxx_1
    xxx	 xxx_2
    yyy	 yyy_1
    xxx	 xxx_3
    yyy	 yyy_2
    zzz	 zzz_1
    zzz	 zzz_2
    zzz	 zzz_3
    xxx	 xxx_4

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Je m'interroge sur l’intérêt d'une telle opération... dans quel but faites vous cela ?

    Vous n'avez pas spécifié d'ordre, on va donc supposer qu'il ne vous importe pas, et vous pouvez faire 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
     
     
    ;WITH T AS (
    	SELECT	
    		id
    		,k
    		,CAST(
    			ROW_NUMBER() OVER(
    				PARTITION BY id 
    				ORDER BY (SELECT 1)
    			)  
    			AS VARCHAR(10)
    		)AS Rn
    	FROM LaTable
    )
    UPDATE T
    	SET k = id + '_' + rn

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 169
    Points : 76
    Points
    76
    Par défaut
    merci du retour aieuuuu;
    l’intérêt c'est que dans une table j'ai des lignes en doublons d'autres pas.L'idée est que je puisse compter mes doublons en fonction des données (par ex : on a 3 doublons xxxx , 4 doublons yyyy, 2 doublons zzzz .....): en tt cas c'est qu'on me demande au boulot et je n'y arrives pas .Le résultat attendu est ce que j'ai mis dans la colonne "key" dans mon 1er message .

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Alors il n'y a sans doute pas besoin de stocker cette donnée dans la table.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 169
    Points : 76
    Points
    76
    Par défaut sybase n'aime pas row_num() over partition
    En testant la solution au bureau , je me rends compte que ce n'est pas compatible avec Sysbase.
    On dirait que la fonction ROW_NUM() over partion by n'est pas reconnue sur Sybase !!!!
    Du coup mon problème n'est pas résolu , car je pensais que le T-SQL était le même quelque soit le SGBD ! ça aurait été trop beau

  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 394
    Points
    18 394
    Par défaut
    Quelle version de Sybase ?
    ASE ne supporte pas les fonctions de fenêtrages (au moins jusqu'en v12), contrairement à IQ.

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 920
    Points : 51 712
    Points
    51 712
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par doudou8mc Voir le message
    En testant la solution au bureau , je me rends compte que ce n'est pas compatible avec Sysbase.
    On dirait que la fonction ROW_NUM() over partion by n'est pas reconnue sur Sybase !!!!
    C'est ROW_NUMBER()


    A +

Discussions similaires

  1. [AC-2003] Filtres SQL par groupe d'options
    Par minot83 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 29/01/2014, 18h59
  2. SQL 2005 lors de l'export créer un fichier par procédure
    Par hunter007 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 10/03/2008, 19h25
  3. [T-SQL] Créer un compteur (clé) dans un select
    Par Mathusalem dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/01/2007, 10h23
  4. importer bdd par un ficher sql
    Par wil4linux dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 25/05/2005, 16h25
  5. [XSL] Debutant : créer un compteur.
    Par castaka dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 21/04/2005, 16h13

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