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 :

Obtenir la date à laquelle la qté mini cdée a été atteinte [2014]


Sujet :

Développement SQL Server

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Obtenir la date à laquelle la qté mini cdée a été atteinte
    Bonjour,
    J'ai une table SQL avec les valeurs suivantes (Commande, Poste, Quantité expédiée, Date expédition et Quantité Mini à expédier)
    Pour chaque Cde-Pst j'aimerais obtenir la date à laquelle la quantité mini a été atteinte comme indiqué dans la dernière colonne du printscreen ci-joint.
    Tous les essais que j'ai fait en SQL ne me donne rien de bon. Est ce que quelqu'un aurait une idée ?
    Un même numéro de cde peut revenir plusieurs fois avec des numéros de poste différents.
    Merci
    Slts/Viince

    Nom : T_Cde.jpg
Affichages : 124
Taille : 39,9 Ko

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    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 106
    Points : 28 393
    Points
    28 393
    Par défaut
    Il m'a fallu un certain temps avant de comprendre que tu voulais comparer la somme cumulée des quantités expédiées avec la quantité mini à expédier.
    Tout est dans ces deux mots : somme cumulée qui se traduit en SQL en SUM(quantité expédiée) OVER (PARTITION BY commande, poste ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)Je te laisse faire la suite.

    PS : Un petit complément : Comme on ne peut pas utiliser une fonction de regroupement fenêtrée dans une restriction, il faut commencer par calculer les sommes cumulées dans une requête et appliquer la restriction sur cette table dérivée.

  3. #3
    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
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour


    essayez ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    ;WITH CTE AS(
    	SELECT 
    			commande 
    		,	poste 
    		,	Qty_Art_Exp 
    		,	Dte_Exp 
    		,	Qte_mini_Art_Cde 
    		,	SUM(Qty_Art_Exp) OVER(PARTITION BY commande, poste ORDER BY Dte_Exp) AS SC
    	FROM LaTable
    )
    SELECT
    			commande 
    		,	poste 
    		,	Qty_Art_Exp 
    		,	Dte_Exp 
    		,	Qte_mini_Art_Cde 
    		,	MIN(CASE WHEN SC >= Qte_mini_Art_Cde THEN Dte_Exp END) OVER(PARTITION BY commande, poste) AS Dte_Qte_Mini_Atteinte
    FROM CTE

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Merci Al1 et Aïeuuu... Dès lundi j'essaie vos propositions.
    Je vous tiens informés.
    Viince

  5. #5
    Membre régulier
    Homme Profil pro
    test
    Inscrit en
    Mai 2016
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Algérie

    Informations professionnelles :
    Activité : test
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Mai 2016
    Messages : 345
    Points : 121
    Points
    121
    Par défaut
    En lisant cette discussion
    il ma Tirer mon attention l'utilisation du clause over (partition by) après l'opération sum()
    alors je pose cette question
    Quel est la différence entre la fonction group by et partition by
    car j'utilise toujours partition by dans une fonction du classement row_number()
    désoler si j'ai posé cette question dans une mauvaise place ?

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Absolutely perfect !
    Exactement ce que je voulais obtenir.
    Merci Al1 pour l'explication (function que je ne connaissais pas) et Aieuu pour le développement, (testé et adapté)

    Bonne journée
    Viince

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

Discussions similaires

  1. [C#]comment obtenir la date du jour?
    Par bakonu dans le forum C#
    Réponses: 2
    Dernier message: 03/11/2005, 11h58
  2. Comment obtenir la date dans une store proc?
    Par Dnx dans le forum Langage SQL
    Réponses: 4
    Dernier message: 17/10/2005, 17h31
  3. comment obtenir une date dans une storeproc?
    Par Dnx dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/10/2005, 15h19
  4. Comment obtenir la date de début d'une semaine ?
    Par Vodkha dans le forum Langage
    Réponses: 5
    Dernier message: 19/08/2005, 09h54
  5. Obtenir des dates en fonction du n° de la semaine
    Par coeur74 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 10/02/2005, 13h42

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