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

Développement SQL Server Discussion :

Programation SQL-Server


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 6
    Par défaut Programation SQL-Server
    Bonjour à tous,
    je vous expose mon problème,
    j'ai 2 tables, une première contenant des codes, des montants et des années.
    Une deuxième contenant des codes, des années et des taux et des regroupements.
    Je souhaite faire une jointure entre ces deux tables afin de retrouver pour chaque code de ma 1ere table le montant ventilé par regroupements en fonction des taux de ma 2eme table par année.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select TB1.code,TB1.montant,TB1.annee,TB2.taux,TB2.regroupement,TB2.annee, (TB2.taux*TB1.montant) montant_prorate
    from TB1
    left outer join TB2 on TB2.code=TB1code
    where TB2.annee='xxxx'
    Mon problème est que lorsque dans ma table 2 le code n'existe pas pour une année, mon montant proraté est faux quand je filtre sur l'année en question.

    Je dois avouer que je bloque, peut-être faut-il créer une boucle afin que si pour un code une année n'existe pas, une ligne se créée soit identique à la celle de l'année précédente soit plus simplement avec un taux =1 indépendamment du regroupement (quitte à ce que ce regroupement soit vide).

    J'espère être suffisamment clair, sinon n'hésitez pas me le dire,

    merci d'avance,

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    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 136
    Par défaut
    Citation Envoyé par SUPSONIC Voir le message
    Mon problème est que lorsque dans ma table 2 le code n'existe pas pour une année, mon montant proraté est faux quand je filtre sur l'année en question.
    De quelle manière est-il faux ?
    S'il s'agit simplement de prendre un taux de 1 quand l'année n'est pas renseignée, un simple coalesce suffit.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (coalesce(TB2.taux, 1) * TB1.montant)
    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
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 6
    Par défaut
    Bonjour,
    en fait le montant est nul :
    le code n'existant pas dans la table 2 pour une année spécifique, ce code existe tout de même sur une ou des autres années.
    Je souhaiterai alors soit qu'il remplace le taux du code de la table 2 par 1 ou qu'il reprenne le taux pour ce code de l'année précédente,

    merci

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 6
    Par défaut
    Même en mettant ISNULL ou coalesce, le résultat est toujours nul car le taux n'existe pas pour le code et pour l'année,
    je pense qu'il faut mettre une condition sur la jointure entre les tables, mais je ne sais pas comment faire.
    Si quelqu'un a une idée, je suis preneur,

    merci d'avance

  5. #5
    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
    Par défaut
    Bonjour,

    Ce qu'il faudrait avant tout, c'est un règle de gestion précise pour savoir quel taux prendre dans ce cas là...

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 6
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    Bonjour,

    Ce qu'il faudrait avant tout, c'est un règle de gestion précise pour savoir quel taux prendre dans ce cas là...
    La règle de gestion que je souhaiterai voir appliquée, c'est de prendre le taux de l'année la plus proche pour un code :
    si il y a un taux en 2015 et que je souhaite interroger sur 2014 je souhaiterai prendre le taux de 2015
    Si il y a un taux en 2013 et que je souhaite interroger 2014 alors prendre le taux 2013
    EN fin si je souhaite interroger 2014 et qu'il y a un taux 2013 et 2015 alors prendre le taux 2015.

    Je pense que cela doit être assez embêtant à faire, si quelqu'un peut me mettre sur la voie...

    merci d'avance,

Discussions similaires

  1. [Livre] Programming SQL Server 2005
    Par zoom61 dans le forum Livres
    Réponses: 1
    Dernier message: 11/06/2014, 13h05
  2. programe conversion requête sql SQL-Server en Oracle
    Par grav dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 26/04/2006, 17h36
  3. Réponses: 4
    Dernier message: 26/04/2006, 17h08
  4. SQL Server + run programs
    Par phicarre dans le forum Langage SQL
    Réponses: 1
    Dernier message: 30/08/2005, 22h40

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