Salut,
Je ne comprenais pas le pourquoi d'une erreur d'exécution d'une requête mais je pense être tombé sur la cause.
Soit la table1 qui a deux champs
> Date1 de type Date
> Valeur1 de type réel simple
et la table2 qui a deux champs
> Date2 de type Date
> Valeur2 de type réel simple
La requête suivante passe très bien avec jet :
Par contre, la requête suivante plante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT date1, SUM(valeur1) AS A, (SELECT SUM(valeur2) FROM table2 WHERE YEAR(date2)=YEAR(date1)) AS B FROM table1 GROUP BY date1
avec l'erreur "Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée 'date1' comme une partie de la fonction d'agrégat"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT YEAR(date1), SUM(valeur1) AS A, (SELECT SUM'valeur2) FROM table2 WHERE YEAR(date2)=YEAR(date1)) AS B FROM table1 GROUP BY YEAR(date1)
Bref, quand on utilise un champ de la requête principal dans une requête secondaire, il faut que ce champ fasse partie individuellement du GROUP BY (et s'il fait partie seulement d'une expression du GROUP BY, ça ne marche pas !).
(Et bien entendu, utiliser une jointure ne permet pas d'arriver au résultat attendu)
Vous aviez déjà constaté cette limitation (qui n'existe pas en Transac SQL) ?
Partager