Discussion: Utiliser le CAST

  1. #1
    Membre confirmé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    mai 2002
    Messages
    1 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : mai 2002
    Messages : 1 155
    Points : 587
    Points
    587

    Par défaut Utiliser le CAST

    Bonjour,

    J'utilise le CAST en calculant des champs pour obtenir une décimale à deux chiffres. A votre avis, faut-il utiliser le CAST pour toute l'opération ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SUM (CAST(CL.QUANTITE * CL.PRIX_UNITAIRE AS NUMERIC(9,2)))  AS MONTANT_HT
    Ou utiliser le CAST pour chaque champ ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SUM (CAST(CL.QUANTITE AS NUMERIC(9,2))) * CAST(CL.PRIX_UNITAIRE AS NUMERIC(9,2)))  AS MONTANT_HT
    Sachant que je pourrais avoir quatre à cinq champs dans le calcul.
    En vous remerciant de votre aide.
    Le Savoir c'est le Pouvoir !
    S.Freud

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Ingénieur d'études décisionnel
    Inscrit en
    mai 2002
    Messages
    7 727
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 7 727
    Points : 23 820
    Points
    23 820

    Par défaut

    Quel est le type des colonnes utilisées dans le calcul à l'origine ?
    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.

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 9 134
    Points : 20 879
    Points
    20 879
    Billets dans le blog
    9

    Par défaut

    Bonjour
    Citation Envoyé par freud Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SUM (CAST(CL.QUANTITE AS NUMERIC(9,2))) * CAST(CL.PRIX_UNITAIRE AS NUMERIC(9,2)))  AS MONTANT_HT
    Donnera 4 décimales sans parler du fait que si les colonnes ont plus de décimales on obtiendra des arrondis dangereux

    Il y a une autre possibilité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CAST(SUM(CL.QUANTITE*CL.PRIX_UNITAIRE) AS NUMERIC(9,2))  AS MONTANT_HT
    Tout dépend si l'on veut arrondir "à la ligne" dans le premier SQL ou "au groupe" dans la seconde
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
    J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
    Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous

  4. #4
    Membre confirmé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    mai 2002
    Messages
    1 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : mai 2002
    Messages : 1 155
    Points : 587
    Points
    587

    Par défaut

    Citation Envoyé par al1_24
    Quel est le type des colonnes utilisées dans le calcul à l'origine ?

    Tous les champs sont en NUMERIC(15,2) et si je n'utilise pas le CAST le résultat est une décimale de huit ou dix chiffres selon le nombre de champs impliquer dans le calcul.
    Le Savoir c'est le Pouvoir !
    S.Freud

  5. #5
    Membre confirmé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    mai 2002
    Messages
    1 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : mai 2002
    Messages : 1 155
    Points : 587
    Points
    587

    Par défaut

    Pardon SergioMaster j'ai pa vu votre post je vais essayer votre solution merci
    Le Savoir c'est le Pouvoir !
    S.Freud

  6. #6
    Membre confirmé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    mai 2002
    Messages
    1 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : mai 2002
    Messages : 1 155
    Points : 587
    Points
    587

    Par défaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CAST(SUM(CL.QUANTITE*CL.PRIX_UNITAIRE) AS NUMERIC(9,2))  AS MONTANT_HT
    Donc au groupe on CAST au début une fois pour toute l'opération quelque soit le nombre de champ impliquer comme par exemple pour l'opération suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT CAST(SUM((CL.QUANTITE * CL.PRIX_UNITAIRE) * (COALESCE(CL.TAUX_REMISE,0)/100.0))AS NUMERIC(9,2))  AS MONTANT_REMISE
    FROM  COMMANDE_FOUR_LIGNE AS CL
    Et à la ligne ce n'est pas pareil, bien sûr sans le SUM ?
    Le Savoir c'est le Pouvoir !
    S.Freud

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 9 134
    Points : 20 879
    Points
    20 879
    Billets dans le blog
    9

    Par défaut

    Citation Envoyé par freud Voir le message
    Donc au groupe on CAST au début une fois pour toute l'opération quelque soit le nombre de champ impliqué comme par exemple pour l'opération suivante:
    Oui

    Et à la ligne ce n'est pas pareil, bien sûr sans le SUM ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT  CAST(CL.QUANTITE * CL.PRIX_UNITAIRE*COALESCE(CL.TAUX_REMISE,0)/100.0 AS NUMERIC(9,2))  AS MONTANT_REMISE
    FROM  COMMANDE_FOUR_LIGNE AS CL
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
    J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
    Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous

  8. #8
    Membre confirmé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    mai 2002
    Messages
    1 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : mai 2002
    Messages : 1 155
    Points : 587
    Points
    587

    Par défaut

    OK merci SergioMaster
    Le Savoir c'est le Pouvoir !
    S.Freud

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/02/2011, 12h30
  2. Réponses: 16
    Dernier message: 12/11/2008, 20h36
  3. Réponses: 2
    Dernier message: 16/07/2007, 15h34
  4. Utilisation de cast sans pipelined
    Par rabddoul dans le forum Oracle
    Réponses: 15
    Dernier message: 27/10/2005, 16h20
  5. Utilisation de cast dans de l'héritage
    Par dreamanoir dans le forum C++
    Réponses: 4
    Dernier message: 21/02/2005, 21h01

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