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

Requêtes MySQL Discussion :

Concaténation signe et montant avant somme globale


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Avril 2021
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Avril 2021
    Messages : 15
    Par défaut Concaténation signe et montant avant somme globale
    Bonjour,

    Je charge des fichiers plats dans des bases SQL afin de manipuler les données.
    Par contre, j'ai toujours en ce qui concerne les montants :
    - Signe dans un champ
    - Montant associé
    - Décimale après la virgule

    Tous mes champs sont fixés en VARCHAR avec la , comprise dans le champs "montant associé"

    J'ai besoin dans le cadre de manipulation de ces montants (sommes globales ou ligne à ligne entre Table 1 et table 2 (par rapport à un identifiant commun entre les deux tables).
    Je verrais bien un concat + réintégrer en AS "montant X" pour ensuite pouvoir manipuler cette donnée la dans les rapprochements à faire

    Mais étant néophyte, la théorie c'est bien, mais la pratique est... compliquée
    J'ai des dizaines de montants de ce genre mais avec un exemple je saurais me débrouiller, je pense !

    Quelques âmes charitables ?
    D'avance merci

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 360
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 360
    Billets dans le blog
    17
    Par défaut
    Tous mes champs sont fixés en VARCHAR avec la , comprise dans le champs "montant associé"
    J'ai besoin dans le cadre de manipulation de ces montants (sommes globales ou ligne à ligne entre Table 1 et table 2 (par rapport à un identifiant commun entre les deux tables).
    Je verrais bien un concat + réintégrer en AS "montant X" pour ensuite pouvoir manipuler cette donnée la dans les rapprochements à faire
    Je n'ai pas bien compris quel était le problème. Tu peux être plus précis ?

    En tout cas, enregistrer des numériques dans du VARCHAR est une aberration.
    Définis une taille de colonne. DECIMAL(10,2) peut stocker jusqu' 99999999,99.
    Et lors de l'import de tes fichiers convertis tes valeurs dans la bonne forme. Avec MySQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    INSERT INTO ta_table
    SET
        ta_colonne_1 = REPLACE(:ta_valeur_1, ',', '.'),
        ta_colonne_2 = REPLACE(:ta_valeur_2, ',', '.'),
        ...
    ;
    Ensuite tu pourras exploiter tes données.

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 021
    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 : 22 021
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CASE signe 
       WHEN '+' THEN CAST(REPLACE(montant, ',', '.') AS DECIMAL (16, decimale))
       WHEN '-' THEN -CAST(REPLACE(montant, ',', '.') AS DECIMAL (16, decimale))
    END AS MONTANT_NUMERIQUE
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Membre averti
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Avril 2021
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Avril 2021
    Messages : 15
    Par défaut
    Bonjour,
    merci pour vos retours, je vais tester cela )

    @Séb : en fait c'est un script qui tourne pour lecture de fichiers (il y en a beaucoup et tous différents).
    Pour éviter tout problème de chargement des structures de fichiers et formats différents (nombre de données, types de données, listes des données toujours différents), il a été décidé d'approcher ca en VARCHAR pour éviter tout problème de types.
    L'objectif étant de faire des recettes des fichiers, ils sont dropés dans la foulée

    encore merci a tous

Discussions similaires

  1. Réponses: 7
    Dernier message: 20/12/2012, 19h06
  2. somme globale par ligne
    Par dianbobo dans le forum Excel
    Réponses: 1
    Dernier message: 26/09/2012, 17h50
  3. [XL-2002] Insérer signe "+" pour montant positif.
    Par Laurette23 dans le forum Excel
    Réponses: 2
    Dernier message: 07/09/2011, 10h28
  4. [V6] Ratio montant ligne / Somme tableau
    Par Aitone dans le forum Deski
    Réponses: 7
    Dernier message: 23/06/2009, 15h29
  5. filtrer saisies et faire une somme globale
    Par mcellier dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/09/2005, 18h00

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