Bonjour,
SGBD: Ingres (oui c'est encore utilisé)
Je dispose de 2 tables :
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 .. ........ ....
Ma 1ere idee etait de faire ceci avec une premiere d'insertion
Puis differentes requetes d'update pour completer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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)j'ai donc recherche un peu sur google et sur le forum , j'ai trouve quelques reponses interessantes, commeE_US0B70 line 1, aggregate function 'sum' not allowed in this context.
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
j'ai donc essaye d'appliquer cela a mes requetes, ce qui donne au choix directement dans le insert :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 update xxx from yyy set a = (select sum(b) from c)
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
(avec a la suite la syntaxe classique d'un select)E_US09C5 line 1, Syntax error on 'select'. The correct syntax is:
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![]()
Voila , desole pour l'enorme bloc de texte mais j'ai essaye de bien (trop ?) detailler et de montrer que j'avais essaye et cherche pas mal avant de poster.
Merci de votre temps et de vos reponses
Partager