saludos
quiero saber por que no puedo obtener el maximo de esta consulta colocando despues del GROUP BY: having max(sum(Leche.cantidad)). Me da este error: Cannot perform an aggregate function on an expression containing an aggregate or a subquery.
select Granja.NoGranja, sum(Leche.cantidad) as Produccion_Leche from Granja inner join
Animal on Granja.NoGranja = Animal.NoGranja inner join Produccion on
Produccion.idProd = Animal.IdProd inner join [Leche] on [Leche].idProd = Produccion.idProd
GROUP BY Granja.NoGranja
Esa es tu sentencia completa?
en que parte usas?
Maxasi?
<!--sql--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>
SQL </td></tr><tr><td id='CODE'><!--sql1-->[color=blue;font-weight]select[/color] Granja.NoGranja,
sum(Leche.cantidad)
as Produccion_Leche
from Granja inner
join Animal on Granja.NoGranja
= Animal.NoGranja inner
join Produccion on
Produccion.idProd
= Animal.IdProd inner
join [Leche] on [Leche].idProd
= Produccion.idProd GROUP BY Granja.NoGranja having
max(
sum(Leche.cantidad)) <!--sql2--></td></tr></table><div class='postcolor'><!--sql3-->
pues creo que eso no esta permitido
mira este seria un ejemplo con sub-consultas tendrias que adaptarlo con las tablas apropiadas, con esto obtendrias el maximo de produccion de leche por granja (quedando pendientes las demas tablas):
* <!--sql--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>
SQL </td></tr><tr><td id='CODE'><!--sql1-->[color=blue;font-weight]select[/color] Granja.NoGranja,
max(([color=blue;font-weight]SELECT[/color]
sum(Leche.Cantidad)
FROM Leche where Granja.NoGranja
=Granja.NoGranja GROUP BY Leche.NoGranja)) Produccion_Leche
from Granja order by Produccion_Leche
desc <!--sql2--></td></tr></table><div class='postcolor'><!--sql3-->
* Este codigo fue probado en MySQL y es posible que algunas haya que hacer algunas modificaciones para adaptarlo a SQL Server
Otro detalles si lo que haces es un Having (deduzco
que solo te interesa la granja con mayor produccion de leche, el cual seria un solo registro)
Puedes hacer lo siguiente:
<!--sql--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>
SQL </td></tr><tr><td id='CODE'><!--sql1-->[color=blue;font-weight]SELECT[/color] Top 1
sum(Leche.Cantidad) Produccion_Leche
desc FROM Leche,Granja where Granja.NoGranja
=Granja.NoGranja GROUP BY Leche.NoGranja
order by Produccion_Leche
desc <!--sql2--></td></tr></table><div class='postcolor'><!--sql3-->
Ordenarlos de mayor a menor y tomar el primer registro que por logica debe ser el mayor
Espero haber ayudado
having es una condición como el where pero que se aplica a los a los registros resultantes de algún GROUP BY y max no es ninguna condición.
¿Se entiende?
No
Saludos