|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre à l'essai
![]() Inscription : mai 2008 Messages : 216 ![]() |
Bonjour ,
Je suis entrain de développer une requête me permettant de sélectionner des données qui vérifient ma condition dans le filtre . En fait , je dois récupérer d'une table une valeur TD (pour un ID) correspondant à l'année N-1. Faire une comparaison avec la valeur TD de l'année N (pour un ID) Puis inserer dans une autre table si TD(N) >= 40% * TD(N-1) Voici ma requête : Code :
Je ne vois pas comment je pourrais l'éviter J'espère que j'étais clair dans l'explication de mon besoin En vous remerciant. |
||
|
|
00
|
|
|
#2 | ||
|
Nouveau Membre du Club
![]() Inscription : juillet 2007 Messages : 87 ![]() |
Bonjour,
A priori, la table vam contient plusieurs lignes de TD pour un même ID à une date donnée. Est-ce normal ? Si non, tes données doivent d'abord être corrigées. Si oui, est-ce que la somme de ces TD pourrait servir à ta comparaison ? exemple : Code :
Il faudrait alors plus d'informations sur TD et/ou sur l'organisation de tes tables. (ex : pourquoi deux tables différentes vam et mct1 pour des informations similaires ?) |
||
|
|
00
|
|
|
#3 |
|
Membre à l'essai
![]() Inscription : mai 2008 Messages : 216 ![]() |
Merci pour ta réponse.
En fait , je dois faire une procédure qui me permette de faire le chargement de ma table cible. Dans un premier temps , je charge une table temporaire MCT par les données de l'année en cours c'est à dire : ID C_MONTH TD 1 201001 133 1 201002 144 ... 1 201012 154 Puis je dois insérer dans ma table cible les données TD(du mois 201012) >= 40%*TD (200912) |
|
|
00
|
|
|
#4 |
|
Nouveau Membre du Club
![]() Inscription : juillet 2007 Messages : 87 ![]() |
D'accord alors, je confirme, ton problème vient de vam.
Pour un couple ID et 200912, tu récupères plusieurs valeurs (or techniquement l'emploi d'une sous-requête et de l'opérateur de comparaison '=' t'oblige à ne récupérer qu'une seule valeur pour ce couple). Est ce normal ? Si oui, est ce que la somme des TD de ce couple veux dire quelque chose fonctionnellement ? Si oui à nouveau, tu peux utiliser la requête avec sum(). Si non, il va falloir trouver une solution intermédiaire qui ait un sens fonctionnel et qui ne te ramènes que la valeur unique et pertinente. Expliques alors quelles sont les valeurs dans vam, stp. |
|
|
00
|
|
|
#5 |
|
Membre à l'essai
![]() Inscription : mai 2008 Messages : 216 ![]() |
En fait , afin de faciliter la tache j'insere dans ma table temporaire les(ID , 201012)
Dans vam(=table temp) les colonnes sont (ID C_MONTH et TD) pour chaque (ID , mois) on a une valeur TD bien définit. Je dois faire une comparaison entre la valeur TD(201012) et TD(200912). si TD(201012) >= 0.4* TD(200912) J'insère dans ma table cible. Je ne dois pas faire de sum |
|
|
00
|
|
|
#6 | ||||
|
Nouveau Membre du Club
![]() Inscription : juillet 2007 Messages : 87 ![]() |
Citation:
Citation:
A priori, au vu de l'erreur, tu n'as pas qu'une seule valeur par (Id, mois). Peux tu faire une requête du style suivant (à peaufiner pour ton cas précis), stp ? Code :
Par contre si elle ramène qqchose, chaque ligne sera une ligne en erreur par rapport à ta règle annoncée pour chaque (ID , mois) on a une valeur TD bien définit. |
||||
|
|
00
|
|
|
#7 |
|
Membre à l'essai
![]() Inscription : mai 2008 Messages : 216 ![]() |
j'ai dèjà eu le reflexe de verifier si j'ai des doublons dans ma table.
en utilisant même requete que toi => résultat : 0 lignes |
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Inscription : avril 2006 Messages : 1 024 ![]() |
y'a un truc de pas possible...
Peut être que les doublons se créent dans ton processus de chargement de table temporaire que tu ne détecte pas lorsque tu fais ta requête de vérif plus tard (si elle est créée par du "on commit delete rows" par exemple) |
|
|
00
|
|
|
#9 |
|
Nouveau Membre du Club
![]() Inscription : juillet 2007 Messages : 87 ![]() |
Il doit nous manquer une information dans ta présentation du problème car ce message n'a pas 36 causes. Tu ramènes des doublons pour un couple (ID, 200912) dans ta table VAM. Pour info : c'est quoi le type de vam.c_month ? |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com