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 et SQL. Discussion :

Calculer variation de stock avec une fonction Date


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 92
    Points : 90
    Points
    90
    Par défaut Calculer variation de stock avec une fonction Date
    Bonjour, Bonjour,
    Voici mon probleme :
    j'ai une requête ou j'aimerais calculer la variation de mes stocks chaque mois.
    Petit rappel : variation de stocks = (stock mois m) - (stock mois m-1
    Et donc dans le champs mois de la requête j'ai voulu inserer le code ci dessous :
    Mais ca morche pô
    Need some help please...

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 359
    Points : 23 829
    Points
    23 829
    Par défaut
    Compte tenu du peu que tu posté j'essairai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MoisPrecedent:DateAdd("m";-1;[Date])
    A+

  3. #3
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 92
    Points : 90
    Points
    90
    Par défaut
    Oui c'est vrai c'est pas tres clair.
    Je veux donc faire trois requêtes :
    - dans la première je calcule le stock de ce mois actuel
    - dans la deuxième je calcule le stock du mois precedents
    - dans la troisième faire la difference entre les deux pour la variation.

    Cependant il faut que la base sache qu'on se trouve au mois 4 (avril) pour pouvoir faire le calcul.
    Et donc attaquer :
    - le mois 4 dans la première requête
    - le mois 3 dans la deuxième requête

  4. #4
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 92
    Points : 90
    Points
    90
    Par défaut
    Dans la table Tb_Stocks j'ai 4 colonnes je vous montres avec un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Id_stocks   Mois_stocks    Annee_stocks    Montant_stocks
       1             1              2012                100
       2             2              2012                250
       3             3              2012                600
    et donc la j'aimerais calculer 250 - 100 pour le mois de fevrier;
    et calculer 600 - 250 pour le mois de mars ... etc ...

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 359
    Points : 23 829
    Points
    23 829
    Par défaut
    D'abors 2 requêtes pour trouver tes données de stock.

    rM :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select Tb_Stocks.*, month(Date()) as MoisDiff from Tb_Stocks where Mois_stocks = month(date()) and Mois_stocks = year(date()) 'Sélectionne les enregistrements du mois courant
    rM1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select Tb_Stocks.*, month(Date()) as MoisDiff from Tb_Stocks where Mois_stocks = month(dateAdd("m",-1,date())) and Mois_stocks = year(dateAdd("m",-1,date())) 'Sélectionne les enregistrements du mois précédent
    Passer par DateAdd évite d'avoir à gérer explicitement les cas de début d'année où le mois précédent est décembre de l'année précédente.

    après tu fais une 3ième requête de jointure entre rM.MoisDiff et rM1.MoisDiff pour matcher tes 2 stocks et tu calcule la différence entre rM1.Montant_stocks
    et rM.Montant_stocks.

    Cela ne va sans doute pas être hyperrapide mais si tu as peu de données cela ne devrait pas être un problème.

    A+

  6. #6
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 92
    Points : 90
    Points
    90
    Par défaut
    Merci Marot-r c'est exactement ce que je voulais
    A+

  7. #7
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 92
    Points : 90
    Points
    90
    Par défaut
    Désolé je reviens vers toi. En faite cela marche parfaitement j'ai ma variation de stock pour le mois actuelle. Cependant j'ai un tableau qui ma reprend toutes mes variations de l'année 2011 et début 2012.
    J'ai essayée quelques bidouilleries pour que la requête me fasse ce calcul pour les mois précedents mais cela ne marche pas. Je voulais savoir si c'etait bien possible de faire ca ou pas ?
    Merci

  8. #8
    Membre actif Avatar de Flyoss
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2012
    Messages : 157
    Points : 278
    Points
    278
    Par défaut
    Pour faire court: Oui, c'est possible.....enfin je pense

    Pour développer:
    Plusieurs solutions (au moins 2)

    -Solution 1 : Tu fais une boucle for sur le nombre de mois - 1 (en effet arrivé au premier mois tu n'auras pas de mois précédent) (Solution la plus simple)


    -Solution 2 : Tu fais une procédure récursive en jouant avec la date (Solution que je trouve plus jolie )


    EDIT: pas vu qu'on était en SQL, me croyais en VBA
    Oublies ce que j'ai dit je retourne dormir

  9. #9
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 92
    Points : 90
    Points
    90
    Par défaut fusion, pas la peine d'avoir 3 posts
    Merci mais MMMMhhh heu excuse moi je suis un peu novice en la matiere j'ai juste besoin d'un peu plus de precision pour aller faire mes petites recherches

    haa eh bien bonne nuit mon cher

    J'ai pensée à un Dlookup mais je sais pas si dans les critere de cette fonction on peut mettre Mois = Mois - 1 ?

  10. #10
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 359
    Points : 23 829
    Points
    23 829
    Par défaut
    Si tu travail avec des années complètes ou du moins sur 12 mois, il suffit de sélectionner une année complète dans rM et rM1

    pour rM :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    where DateSerial(Annee_stocks, Mois_stocks, 1) between DateAdd("m",-12,(date()) and date()

    pour rM1

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    where DateSerial(Annee_stocks, Mois_stocks, 1) between DateAdd("m",-24,(date()) and DateAdd("m",-12,(date())

    Comme cela tu va travailler sur 12 mois à partir de la date courante.

    Il faudra verrifier si between est bon et si ce n'est pas le cas, utiliser < et >= à la place pour définir l'interval de date.

    A+

Discussions similaires

  1. Combox conditionnelle avec une fonction date
    Par baba59360 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/02/2015, 09h56
  2. Probleme avec une fonction de calcul d'un age
    Par dondano dans le forum Langage
    Réponses: 1
    Dernier message: 27/04/2007, 11h50
  3. Modifier un champs texte avec une fonction PHP (calcul TVA)
    Par Stella2809 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/11/2005, 00h55
  4. fonctions stockées avec une table en argument
    Par bdkiller dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 08/10/2004, 23h17
  5. Problème avec une fonction date.
    Par kmayoyota dans le forum ASP
    Réponses: 8
    Dernier message: 09/09/2004, 12h33

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