Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/01/2011, 11h53   #1
Candidat au titre de Membre du Club
 
Inscription : octobre 2008
Messages : 30
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 30
Points : 10
Points : 10
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 :
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 :
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.
henoch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 16h01   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 459
Points : 10 459
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
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 :
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
       )
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/01/2011, 09h25   #3
Candidat au titre de Membre du Club
 
Inscription : octobre 2008
Messages : 30
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 30
Points : 10
Points : 10
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 :
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.
henoch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 10h49   #4
Candidat au titre de Membre du Club
 
Inscription : octobre 2008
Messages : 30
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 30
Points : 10
Points : 10
C'est bon le code marche, merci beaucoup, il manque plus qu'un group by sur la valeur absolu et c'est bon.
Code :
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
       )
henoch est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h06.


 
 
 
 
Partenaires

Hébergement Web