Voici votre requête originale:
select pName,Price, (Price*Quantity) as SalesValues from saleslog where
BillDate='12-10-2010' and pGroup=15 group by pname, Quantity, Price;
Maintenant, vous dites que vous voulez regrouper par pName seulement. Alors faisons ça.
select pName,Price, (Price*Quantity) as SalesValues from saleslog where
BillDate='12-10-2010' and pGroup=15 group by pname;
Maintenant, il est bien sûr va donner une erreur. Nous devons donc mettre un peu d'agrégation sur les autres colonnes. Il est logique de SUM la colonne SalesValues.
select pName,Price, SUM(Price*Quantity) as SalesValues from saleslog where
BillDate='12-10-2010' and pGroup=15 group by pname;
La colonne de prix est toujours un problème, cependant. Quel agrégateur a du sens pour cela? Cela dépend juste. Vous pouvez faire MAX, MIN ou MOYENNE, je suppose. Mais en réalité, il doit être soit oublié, soit ajouté au groupe par. Si elle est ajoutée au groupe par, vous ne pouvez plus avoir une seule ligne pour chaque pName. Si vous mettez un agrégateur sur Prince, assurez-vous de changer le nom de la colonne pour refléter ce que cela signifie.
/* Leave out the Price completely. (My favorite option.) */
select pName,SUM(Price*Quantity) as SalesValues from saleslog where
BillDate='12-10-2010' and pGroup=15 group by pname;
/* Group by Price. You now have multiple rows per pName. */
select pName,Price, SUM(Price*Quantity) as SalesValues from saleslog where
BillDate='12-10-2010' and pGroup=15 group by pname, Price;
/* Average the Price. (OK, but could lead to confusion.) */
select pName,AVG(Price) as AveragePrice, SUM(Price*Quantity) as SalesValues from saleslog where
BillDate='12-10-2010' and pGroup=15 group by pname;
/* Max Price. (Almost useless). */
select pName,MAX(Price) as MaximumPrice, SUM(Price*Quantity) as SalesValues from saleslog where
BillDate='12-10-2010' and pGroup=15 group by pname;
/* Min Price. (Almost useless). */
select pName,MIN(Price) as MinimumPrice, SUM(Price*Quantity) as SalesValues from saleslog where
BillDate='12-10-2010' and pGroup=15 group by pname;
Je ne recommande pas l'agrégation prix, cependant, (en particulier MAX et MIN) car il sera probablement entraîner une confusion sur la ligne quand les gens essaient d'utiliser la valeur.
Bonjour, cela fonctionne. Je vous remercie. Pouvez-vous résoudre mon problème aussi http://stackoverflow.com/questions/3142023/displaying-sum-of-aggregate-data-in-reports-rdlc –