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 :

Addition sur une partie du numéro de compte [Débutant(e)]


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2021
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Addition sur une partie du numéro de compte
    Bonjour,
    je suis tout débutant !
    j'ai une liste d'enregistrements qui comportent un numéro de compte comptable de 15 caractères et différents montants
    Je voudrais totaliser divers montants sur les 9 premiers chiffres du numéro, et afficher ces 9 premiers chiffres avec les totaux
    merci de votre aide
    Cdt

  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 388
    Points
    18 388
    Par défaut
    Edit : al1_24 a raison, il faut que vous cherchiez un peu

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 109
    Points : 28 439
    Points
    28 439
    Par défaut
    Bonjour,

    Qu'as-tu déjà testé comme requête ? Où rencontres-tu un problème ?

    Il s'agit ici d'effectuer une somme (SUM) sur un regroupement (GROUP BY) par une partie d'une chaine (SUBSTRING).

    Un tutoriel : Formez des sous ensembles avec GROUP BY - Agrégez avec SUM, COUNT, MAX, MIN, AVG...

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2021
    Messages : 3
    Points : 2
    Points
    2
    Par défaut poui, c'est bien cela
    merci

    C'est bien de cela qu'il s'agit. Mon problème est de savoir comment concrètement rédiger cette requête (la partie substring)

    ma table : numéro - montant débit - montant crédit

    Merci

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 344
    Points : 39 742
    Points
    39 742
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Les fonctions chaînes de caractères sont assez différentes d'un SGBD à l'autre, quel est le votre ?

    Par exemple select substring(ma_colonne, 1, 9) fonctionne avec SQL_server, MySQL et DB2

    Il faut que la colonne soit de type (var)char ou faire un transtypage préalable pour pouvoir utiliser substring

    exemple : select substring(cast(ma_colonne as char(15)), 1, 9).

    Attention : si la colonne est numérique, il faudra peut-être compléter avec des zéros non significatifs après trans-typage, si certains numéros commencent par des zéros

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2021
    Messages : 3
    Points : 2
    Points
    2
    Par défaut j'utilise (plutôt je découvre) postgreSQL
    j'utilise (enfin je découvre) postgreSQL

    merci

  7. #7
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 344
    Points : 39 742
    Points
    39 742
    Billets dans le blog
    9
    Par défaut
    Voici un exemple de table avec une colonne de type décimal contenant des numéros de compte (et donc avec des zéros non significatifs) :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    create table T1(C1 decimal(13,2))
    ;
    insert into T1(C1) values (123456789.12), (550), (1234567), (12345678901)
    ;
    select * from T1
    ;

    c1
    123456789.12
    550.00
    1234567.00
    12345678901.00


    Pour que tous les comptes soient formatés sur 9 caractères, il faut utiliser des fonctions afin d'ajouter les zéros non significatifs et de tronquer sur les 9 premiers caractères, comme ci-dessous (j'ai mis les colonnes de travail pour faciliter la compréhension) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    select length(cast(C1 as char(15))) -3         as lg
         , substring(cast(C1 as char(15)), 1, 9)   as sb
         , 12-length(cast(C1 as char(15)))   as yy
         , case when length(cast(C1 as char(15))) -3  > 8
                then substring(cast(C1 as char(15)), 1, 9)
                else substring(concat(repeat('0', 12-length(cast(C1 as char(15)))),
                                      cast(C1 as char(15))
                              ), 1, 9)
          end as xx
    from T1
    ;
    Ce qui donne :
    lg sb yy xx
    9 123456789 0 123456789
    3 550.00 6 000000550
    7 1234567.0 2 001234567
    11 123456789 -2 123456789

    il y a probablement d'autres solutions

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

Discussions similaires

  1. tri sur une partie d'un champ
    Par yoline dans le forum Access
    Réponses: 4
    Dernier message: 19/09/2005, 11h25
  2. Réponses: 5
    Dernier message: 06/09/2005, 16h01
  3. Changement de couleur de police sur une partie d'un caption
    Par kobe dans le forum Composants VCL
    Réponses: 3
    Dernier message: 11/07/2005, 10h18
  4. [Débutant] DISTINCT sur une seule des colonnes ?
    Par Neilos dans le forum Langage SQL
    Réponses: 9
    Dernier message: 23/06/2004, 23h04
  5. [Débutant] Connexion sur une machine distante protégée
    Par arthix dans le forum Développement
    Réponses: 3
    Dernier message: 28/08/2003, 09h46

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