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

MS SQL Server Discussion :

Pb fonction Si en SQl server et Sum


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 32
    Points : 23
    Points
    23
    Par défaut Pb fonction Si en SQl server et Sum
    Bonjour,
    Voilà je vous explique mon problème, mon but est de selectionner de ma base des régules de stock du jour précedent. En semaine, pas de souci pour la selection, arrivé lundi matin , il me faut une extraction avec une condition sur la date différente car il me faut une selection du vendredi au dimanche. (jour J exclu) .

    Mon deuxième problème est que je souhaite faire une deuxième selection cette fois ci sur la valeur absolu. Sauf que ma valeur absolu doit être prise suite à un group by et non article par article.

    Mon code pour le lundi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT *
    FROM [dbo].[Regul_Stk]
    where year([DATE_REGUL]) = year(getdate())
    and (month([DATE_REGUL])*1000 + day([DATE_REGUL]))>=(month(getdate())*1000 + day(getdate())-3) 
    and (month([DATE_REGUL])*1000 + day([DATE_REGUL])) <> (month(getdate())*1000 + day(getdate())) 
    and [VAL_ABSOLU] > 100
    Mon code pour les autres jours de la semaine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT *
    FROM [dbo].[Regul_Stk]
    where year([DATE_REGUL]) = year(getdate())
    and (month([DATE_REGUL])*1000 + day([DATE_REGUL]))>=(month(getdate())*1000 + day(getdate())-1) 
    and [VAL_ABSOLU] > 100
    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 394
    Points
    18 394
    Par défaut
    Commencez par vous appuyer sur cette requête.
    C'est un peu absurde de faire des calculs de date sur des maths réinventés à partir de vos dates qui ne gèrent pas les changement de mois / années.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT *
      FROM [dbo].[Regul_Stk]
     WHERE [DATE_REGUL] < cast(floor(cast(getdate() as float)) as datetime))
       AND (   (datepart(weekday, getdate()) = 2
            AND [DATE_REGUL] >= cast(floor(cast(getdate() as float)) as datetime) -3
               )
            OR [DATE_REGUL] >= cast(floor(cast(getdate() as float)) as datetime) -1
           )

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 32
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Commencez par vous appuyer sur cette requête.
    C'est un peu absurde de faire des calculs de date sur des maths réinventés à partir de vos dates qui ne gèrent pas les changement de mois / années.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT *
      FROM [dbo].[Regul_Stk]
     WHERE [DATE_REGUL] < cast(floor(cast(getdate() as float)) as datetime))
       AND (   (datepart(weekday, getdate()) = 2
            AND [DATE_REGUL] >= cast(floor(cast(getdate() as float)) as datetime) -3
               )
            OR [DATE_REGUL] >= cast(floor(cast(getdate() as float)) as datetime) -1
           )
    Bonjour,
    désolé pour " l'absurdité " mais j'essai de me débrouiller tout seul et c'est la seule méthode que j'ai trouvé. C'est pour cela que je post sur ce forum, c'est pour obtenir de l'aide car je sais que mon code est très médiocre.

    J'ai essayé le code que vous m'avez proposé, il me renvoi une erreur de parenthèse que je n'ai pas réussi à corriger . Merci pour votre aide.

  4. #4
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 32
    Points : 23
    Points
    23
    Par défaut
    C'est bon le code marche, merci beaucoup, il manque plus qu'un group by sur la valeur absolu et c'est bon.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT *
      FROM [dbo].[Regul_Stk]
     WHERE [DATE_REGUL] < cast(floor(cast(getdate() AS float)) AS datetime)
       AND (   (datepart(weekday, getdate()) = 1
            AND [DATE_REGUL] >= cast(floor(cast(getdate() AS float)) AS datetime) -3
               )
            OR [DATE_REGUL] = cast(floor(cast(getdate() AS float)) AS datetime) -1
           )

Discussions similaires

  1. fonction mysql_real_escape_string avec sql server
    Par evra76 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 22/06/2009, 11h10
  2. [WD12] Fonction tri automatique + SQL Server
    Par Raphael1980 dans le forum WinDev
    Réponses: 3
    Dernier message: 05/12/2008, 17h39
  3. Réponses: 1
    Dernier message: 13/12/2006, 14h18
  4. [CSV] Fonction PHP pour SQL Server
    Par wolflinger dans le forum Langage
    Réponses: 2
    Dernier message: 17/05/2006, 12h57
  5. fonction left avec sql server 6.5
    Par shake dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/06/2004, 08h48

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