SoloCodigo
Bases de Datos => SQL Server => Mensaje iniciado por: AdrianHdez en Domingo 3 de Junio de 2007, 07:31
-
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
-
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?
-
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? Max
asi?
<!--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 :P
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: 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 :P
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 :P
Saludos
-
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 :P
:scream: Es que anoche yo estaba ebrio :beer: ... en fin...
:hola: