[SQL] problème de SUM dans un update
Bonjour,
SGBD: Ingres (oui c'est encore utilisé :?)
Je dispose de 2 tables :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
Table ope_w :
Id Montant Code
--- -------- -----
1Z 21498,93 2101
S3 94523,84 2202
.. ........ ....
Table som_ope_w
Id Somme Somme_A Somme_B
--- -------- ------- --------
1Z 21498,93 21498,93 0
S3 94523,84 94523,84 0
.. ........ .... |
Le but de la requete que je cherche a creer est de remplir la table som_ope_w a partir de la table ope_w, en remplissant pour un Id donné la somme de tous les montants qu'il a, et dans Somme_A et Somme_B la somme des montants de cet Id pour certains codes specifiques
Ma 1ere idee etait de faire ceci avec une premiere d'insertion
Code:
1 2 3 4 5 6 7 8
| insert into som_ope_w
select id,
sum(montant),
0,
0,
0
from ope_w
group by id |
Puis differentes requetes d'update pour completer
Code:
1 2 3 4
| update som_ope_w
from ope_w g
set somme_a = sum(g.montant)
where g.code = '2101' or g.c_ope = '2203' // oui code est un char(4) |
A ce point la, la 1ere requete fonctionne parfaitement, mais la 2eme echoue et j'ai un message d'erreur me disant qu'il n'est pas possible de mettre un sum dans un set
Citation:
E_US0B70 line 1, aggregate function 'sum' not allowed in this context.
j'ai donc recherche un peu sur google et sur le forum , j'ai trouve quelques reponses interessantes, comme
http://www.developpez.net/forums/sho...d.php?t=181301
http://www.developpez.net/forums/showthread.php?t=84569
http://www.developpez.net/forums/showthread.php?t=81835
ou la reponse qui ressort a chaque fois et d'utiliser une requete du type
Code:
1 2 3
| update xxx
from yyy
set a = (select sum(b) from c) |
j'ai donc essaye d'appliquer cela a mes requetes, ce qui donne au choix directement dans le insert :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
insert into som_ope_w
select id,
(select sum(montant)
from ope_w
group by id),
(select sum(montant)
from ope_w
where ope_w.code = '2101'
group by id),
(select sum(montant)
from ope_w
where ope_w.code = '2102'
group by id),
from ope_w |
j'ai essaye cela, diverses combinaisans avec ou sans group by, avec ou sans from dans la requete principale, avec un seul champ mis a jour et les autres a 0 , bref rien n'y fait j'ai toujours un message d'erreur peu explicite
Citation:
E_US09C5 line 1, Syntax error on 'select'. The correct syntax is:
(avec a la suite la syntaxe classique d'un select)
J'ai aussi essaye de faire la meme chose avec un update et un set somme_a = (select sum(montant) , mais ca me donne la meme erreur :triste:
Voila , desole pour l'enorme bloc de texte mais j'ai essaye de bien (trop ? :oops: ) detailler et de montrer que j'avais essaye et cherche pas mal avant de poster.
Merci de votre temps et de vos reponses