Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1716 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requête champs calculés

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Requête champs calculés

n°1358004
elkhy
Posté le 02-05-2006 à 18:11:40  profilanswer
 

Bonjour,  
j'ai une table qui regroupe des identifiants avec des valeurs:
tableC
Idcouleur|Idvoiture|Idperiode|Valeur
1| 4| 1| 16
1| 4| 3| 15
1| 43| 1| 789
1| 43| 3| 90
2| 4| 1| 10
2| 4| 3| 25
2| 43| 1| 80
2| 43| 3| 20

 

Je voudrai créer une nouvelle table en faisant des champs calculés de la table ci-dessus

 

voici ce que j'aimerai obtenir:
 
IdCouleurRes |ValRougePrintemps
1  |Valeur(Idcouleur=1 et Idperiode=1) + Valeur(Idcouleur=2 et Idperiode=3)

 

Comment puis-je faire cela ???
 
Merci à tous pour votre aide

mood
Publicité
Posté le 02-05-2006 à 18:11:40  profilanswer
 

n°1358179
Beegee
Posté le 02-05-2006 à 23:27:29  profilanswer
 

SELECT SUM(valeur)
FROM tableC
WHERE (Idcouleur=1 AND Idperiode=1)
OR (Idcouleur=2 AND Idperiode=3);

n°1358491
elkhy
Posté le 03-05-2006 à 11:52:58  profilanswer
 

Salut, dsl pour les oublis, je pense que je n'ai pas été très clair dans mon dernier post ce qui fait que je me heurte toujours à des soucis
J'avais essayé de prendre un exemple plus simple mais en fait, il paraît plus complexe...
 
JE SUIS SUR ACCESS
 
ALors voici mon pb:
 
J'ai actuellement la table suivante:
 
DataComptables
 
IdIndicateur|IdFiliale|Code|IdPeriode|Annee|Valeur
1 |4|Cod1|1|2005|15  
1 |4|Cod1|3|2005|20
1 |43| Cod2|1|2005|25
1 |43 |Cod2|3|2005|75
 
2 |4|Cod1|1|2005|30
2 |4|Cod1|3|2005|45
2 |43|Cod2|1|2005|90
2 |43|Cod2|3|2005|10
 
 
J'aimerai obtenir la table suivante:
 
NouvelIndicateur|IdFiliale|Code|IdPeriode|Annee|Valeur
3|4|Cod1|1|2005|45(15+30)
3|4|Cod1|3|2005|65(20+45)  
3|43|Cod2|1|2005|115(25+90)
3|43 |Cod2|3|2005|85(75+10)
 
J'espère que vous pourrez m'aider,
 
D'avance merci...

n°1358517
Beegee
Posté le 03-05-2006 à 12:10:23  profilanswer
 

SELECT IdFiliale,Code,IdPeriode,Annee,SUM(valeur)
FROM DataComptables  
GROUP BY IdFiliale,Code,IdPeriode,Annee;
 
Et pour le nouvel indicateur, j'imagine que tu veux l'id maxi + 1 ?
 
Dans ce cas, une requête à part :
 
SELECT MAX(IdIndicateur) + 1 FROM DataComptables;
 
(ou si Access le permet :
 
SELECT (SELECT MAX(IdIndicateur) + 1 FROM DataComptables) AS NouvelIndicateur,IdFiliale,Code,IdPeriode,Annee,SUM(valeur)
FROM DataComptables  
GROUP BY IdFiliale,Code,IdPeriode,Annee;


Message édité par Beegee le 03-05-2006 à 12:11:05
n°1358525
elkhy
Posté le 03-05-2006 à 12:17:18  profilanswer
 

Merci Beegeee, euh...non ct pas forcément l'id maxi + 1, ct juste un identifiant dans la nouvel table...je me suis encore mal exprimé...lol
 
Merci,@+

n°1358568
elkhy
Posté le 03-05-2006 à 13:13:04  profilanswer
 

En fait, j'ai parlé trop vite...
 
Ce qu'il me manque c'est comment faire pour additionner juste l'indicateur 1 et 2 car en fait j'ai beaucoup plus d'indicateurs dans ma tables et qui ne doivent pas être additionner ensemble...
 
merci

n°1358582
Beegee
Posté le 03-05-2006 à 13:22:23  profilanswer
 

SELECT IdFiliale,Code,IdPeriode,Annee,SUM(valeur)
FROM DataComptables
WHERE IdIndicateur IN (1,2)
GROUP BY IdFiliale,Code,IdPeriode,Annee;

n°1358592
elkhy
Posté le 03-05-2006 à 13:27:12  profilanswer
 

Exact !!!! Yes, merci merci !!!!

n°1358601
elkhy
Posté le 03-05-2006 à 13:40:37  profilanswer
 

Encore une dernière chose, j'ai encore le pb suivant qui se présente à moi:
 
je dois additionner  2 indicateurs comme tu viens de la faire mais je dois aussi en soustraire....
 
Ex (je sais que la syntaxe est incorrect mais c'est pour mieux me faire comprendre...)
 
SELECT IdFiliale,Code,IdPeriode,Annee,SUM(valeur)  
FROM DataComptables  
WHERE IdIndicateur IN (1,2) - (3,4) -> (1+2) - (3+4)  
GROUP BY IdFiliale,Code,IdPeriode,Annee;  
 
Comme pourrait-on arranger la requête ?
 
merci

n°1358647
Beegee
Posté le 03-05-2006 à 14:43:36  profilanswer
 

Si j'ai bien compris, tu veux additionner quand l'indicateur est 1 ou 2, et soustraire quand il vaut 3 ou 4, et ne pas te préoccuper des autres indicateurs ? Alors il faut utiliser le mot-clé IIF.
 
Je propose donc (j'ai jamais utilisé Access mais j'ai regardé rapidement sur le net :D ) :
 
SELECT IdFiliale,Code,IdPeriode,Annee,SUM(IIF IdIndicateur IN (1,2) THEN valeur ELSE (-valeur))
FROM DataComptables  
WHERE IdIndicateur IN (1,2,3,4)
GROUP BY IdFiliale,Code,IdPeriode,Annee;

mood
Publicité
Posté le 03-05-2006 à 14:43:36  profilanswer
 

n°1358674
elkhy
Posté le 03-05-2006 à 15:04:51  profilanswer
 

merci encore une fois beegee, c'est exactement cela
 
@++


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requête champs calculés

 

Sujets relatifs
authentification parfeu requete phpconvertir macro excel en requete SQL
Requête SQL avec VBpblm de requete SQL besoin aide !!!
ACCESS requete ajout Insert into - a l'aide !AJAX et firefox j'arrive pas a envoyer une requete POST
Somme champs via fonction DECALERImporter champs Mémo de Access en VBA
champs dynamique[SAGE] requete sql via odbc sous sage gestion commercial ligne 100
Plus de sujets relatifs à : Requête champs calculés


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR