Requête champs calculés - SQL/NoSQL - Programmation
Marsh Posté le 02-05-2006 à 23:27:29
SELECT SUM(valeur)
FROM tableC
WHERE (Idcouleur=1 AND Idperiode=1)
OR (Idcouleur=2 AND Idperiode=3);
Marsh Posté le 03-05-2006 à 11:52:58
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...
Marsh Posté le 03-05-2006 à 12:10:23
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;
Marsh Posté le 03-05-2006 à 12:17:18
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,@+
Marsh Posté le 03-05-2006 à 13:13:04
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
Marsh Posté le 03-05-2006 à 13:22:23
SELECT IdFiliale,Code,IdPeriode,Annee,SUM(valeur)
FROM DataComptables
WHERE IdIndicateur IN (1,2)
GROUP BY IdFiliale,Code,IdPeriode,Annee;
Marsh Posté le 03-05-2006 à 13:40:37
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
Marsh Posté le 03-05-2006 à 14:43:36
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 ) :
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;
Marsh Posté le 02-05-2006 à 18:11:40
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