Bonjour,

J'essai de calculer la somme des montants facturés des commandes de 2007.

En clair, pour l'année 2007 j'ai des commandes. A ces commandes j'ai créer des factures, et je veux la somme de toutes ces factures.

Voici la requête que je voudrais faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
select sum(
	select coalesce(sum(lf.MONTANT), 0) as a
	from LIGNE_FACTURE lf, LIGNE_COMMANDE lc 
	where lf.ID_LIGNE_COMMANDE=lc.ID_LIGNE_COMMANDE and lc.ID_COMMANDE=c.ID_COMMANDE
	)
from COMMANDE c
where year(c.DATE)=2007
Mais elle plante sous DB2 me disant que je peux pas faire de select dans un sum...

Si j'enlève le sum, ca fonctionne bien :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
select (
	select coalesce(sum(lf.MONTANT), 0) as a
	from LIGNE_FACTURE lf, LIGNE_COMMANDE lc 
	where lf.ID_LIGNE_COMMANDE=lc.ID_LIGNE_COMMANDE and lc.ID_COMMANDE=c.ID_COMMANDE
	)
from COMMANDE c
where year(c.DATE)=2007
mais ca me renvoie la liste des sommes des factures de chaque commande de 2007, et moi je voudrais la somme de tout ça.

J'ai essayé en mettant le select dans le from, mais là il ne comprend plus qu'il faut relier à la table "c" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
select sum(s.a)
from COMMANDE c, (
		select coalesce(sum(lf.MONTANT), 0) as a
		from LIGNE_FACTURE lf, LIGNE_COMMANDE lc 
		where lf.ID_LIGNE_COMMANDE=lc.ID_LIGNE_COMMANDE and lc.ID_COMMANDE=c.ID_COMMANDE
	) s
where year(c.DATE)=2007
SQL0204N Le nom "c.ID_COMMANDE" n'est pas défini. SQLSTATE=42704
Est ce que qqun aurait une idée ?