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
    Futur Membre du 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
    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 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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 454
    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 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 134
    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...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  4. #4
    Futur Membre du 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
    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 599
    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 599
    Billets dans le blog
    10
    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
    Futur Membre du 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
    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 599
    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 599
    Billets dans le blog
    10
    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