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 17/12/2010, 00h56   #1
 
linda fride
Inscription : décembre 2010
Messages : 10
Détails du profil
Informations personnelles :
Nom : linda fride

Informations forums :
Inscription : décembre 2010
Messages : 10
Points : -2
Points : -2
Par défaut Gestion des dates

Bonjour, quelqu'un peut-il m'aider à résoudre ce problème ?

langage : SQL TRANSACT

je souhaite mettre une condition sur les dates de début, date de fin pour une catégorie de produit :

Ma problématique :

comment écrire le code qui permettra de dire que :

- si datesystème < date de valorisation du mois encours,

alors :

datedebut = dernier jour de valorisation du mois précédent la datefin

datefin = dernier jour de valorisation du mois précédent la datesysteme


NB: la date de valorisation normale est une date fin de mois soit logiquement 30 ou 31 mais peut aussi être le 25 ou 26... selon le nombre de jour ouvrés du mois

donc si on génère un fichier au 15/12/2010 par exemple, on doit pouvoir avoir une un calcul qui prendra ses valeurs entre les dates du 30/09/2010 au 31/12/2010.

Si quelqu'un a une idée,merci d'avance.
danlyf est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 17/12/2010, 12h44   #2
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Bonjour
Comment pouvons nous vous répondre si vous ne postez pas au moins la structure de vos tables ?

Idéalement un jeu d'essai avec résultats attendus seraient les bienvenus...

Postez également la requete que vous avez tenté de faire...
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/12/2010, 22h48   #3
 
linda fride
Inscription : décembre 2010
Messages : 10
Détails du profil
Informations personnelles :
Nom : linda fride

Informations forums :
Inscription : décembre 2010
Messages : 10
Points : -2
Points : -2
Par défaut RE

En effet voici le bout de code en pièce jointe ;
ce que j'essaie de faire :

si NumGamme = 8 alors on considère le NumIndicateur 2 sinon on considère soit le NumIndicateur 2, soit le NumIndicateur 36 selon des conditions qui on déjà été définies.

NumGamme et NumIndicateurs sont des paramètres qui on déjà été déclaré et appartiennent à la même table.

merci d'avance
Fichiers attachés
Type de fichier : sql SQLQuery2.sql (623 octets, 3 affichages)
danlyf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 10h51   #4
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
???

je ne vois pas le rapport entre le code posté et votre question initiale avec le problème de date...

concernant le bout de code je pense que votre dernière ligne ne fonctionne pas "comme vous voulez" car vous tentez de comparer indics.NumIndicateur aux valeurs 2 et 36 en pensant que indics.NumIndicateur vaut alors la valeur qui vient de lui être affectée par ligne juste au dessus avec le CASE, ce qui est faux.

Votre moteur de base de donnée évalue les conditions avec les valeurs originale (avant update donc). Il ne les évalue d'ailleurs pas forcement dans l'ordre dans lequel ces conditions sont écrites, ceci afin d'optimiser la recherche. Si vous voulez placer une condition sur le résultat de votre case, il vous faut le faire explicitement, a savoir non pas :
Code sql :
1
2
 
AND indics.NumIndicateur  IN (2,36)

mais
Code sql :
1
2
 
AND CASE ... IN (2,36)
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 20h41   #5
 
linda fride
Inscription : décembre 2010
Messages : 10
Détails du profil
Informations personnelles :
Nom : linda fride

Informations forums :
Inscription : décembre 2010
Messages : 10
Points : -2
Points : -2
Merci pour cette réponse.

En effet il n'y avait aucun lien entre ma première question et la seconde tout simplement parce que j'avais mal appréhendé le problème mais ça y est je l'ai résolu.
danlyf est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h19.


 
 
 
 
Partenaires

Hébergement Web