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
![Tongue :P](https://solocodigo.com/Smileys/solocodigo/tongue.gif)
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
![Rolleyes :rolleyes:](https://solocodigo.com/Smileys/solocodigo/rolleyes.gif)
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
![Tongue :P](https://solocodigo.com/Smileys/solocodigo/tongue.gif)
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
![Tongue :P](https://solocodigo.com/Smileys/solocodigo/tongue.gif)
Saludos