Select usando Max

26/08/2004 - 09:24 por fjmasero | Informe spam
Wenas:

Quiero sacar los valores de todos los campos del registro
en el que el valor de uno de los cmapos es el mayor de
una tabla.

Select MAX(Campo1), Campo2, Campo3 from Tabla no funciona.

He tenido que poner

SELECT * FROM Tabla WHERE (Campo1 IN(SELECT MAX(Campo1)
FROM Tabla))

Me parece q algo no está bien, pero no sé si es por el
fin de verano sin vacaciones o pq, pero no me "cuadra".

Espero q alguien pueda decirme algo.

Salu2 y gracias.

Preguntas similare

Leer las respuestas

#1 Yoli
26/08/2004 - 09:45 | Informe spam
¿Qué es lo que no te cuadra?¿Los resultados?

Prueba a agrupar los resultados:
SELECT MAX(Campo1), Campo2, Campo3
FROM Tabla
GROUP BY Campo2, Campo3

"fjmasero" escribió en el mensaje
news:05bf01c48b3d$a9794720$
Wenas:

Quiero sacar los valores de todos los campos del registro
en el que el valor de uno de los cmapos es el mayor de
una tabla.

Select MAX(Campo1), Campo2, Campo3 from Tabla no funciona.

He tenido que poner

SELECT * FROM Tabla WHERE (Campo1 IN(SELECT MAX(Campo1)
FROM Tabla))

Me parece q algo no está bien, pero no sé si es por el
fin de verano sin vacaciones o pq, pero no me "cuadra".

Espero q alguien pueda decirme algo.

Salu2 y gracias.
Respuesta Responder a este mensaje
#2 fjmasero
26/08/2004 - 12:18 | Informe spam
HOla Yoli:

Gracias por responder.

Lo q no me cuadra es la forma en q he tenido q hacerlo,
con el select q he indicado, cuando según tengo
entendido, en sql estandard, select max(campo1), campo2
from tabla, si funciona.

Tu select no funciona, pq saca todos los registros (ya lo
había probado).

Salu2

¿Qué es lo que no te cuadra?¿Los resultados?

Prueba a agrupar los resultados:
SELECT MAX(Campo1), Campo2, Campo3
FROM Tabla
GROUP BY Campo2, Campo3

"fjmasero" escribió en el mensaje
news:05bf01c48b3d$a9794720$
Wenas:

Quiero sacar los valores de todos los campos del registro
en el que el valor de uno de los cmapos es el mayor de
una tabla.

Select MAX(Campo1), Campo2, Campo3 from Tabla no


funciona.

He tenido que poner

SELECT * FROM Tabla WHERE (Campo1 IN(SELECT MAX(Campo1)
FROM Tabla))

Me parece q algo no está bien, pero no sé si es por el
fin de verano sin vacaciones o pq, pero no me "cuadra".

Espero q alguien pueda decirme algo.

Salu2 y gracias.





.

Respuesta Responder a este mensaje
#3 Yoli
26/08/2004 - 12:42 | Informe spam
Pues yo creo que lo has hecho bien, lo que en lugar de poner un IN yo
hubiese puesto un =, esa select sólo te va a devolver un registro.
Saludos!

"fjmasero" escribió en el mensaje
news:082401c48b55$f87932f0$
HOla Yoli:

Gracias por responder.

Lo q no me cuadra es la forma en q he tenido q hacerlo,
con el select q he indicado, cuando según tengo
entendido, en sql estandard, select max(campo1), campo2
from tabla, si funciona.

Tu select no funciona, pq saca todos los registros (ya lo
había probado).

Salu2

¿Qué es lo que no te cuadra?¿Los resultados?

Prueba a agrupar los resultados:
SELECT MAX(Campo1), Campo2, Campo3
FROM Tabla
GROUP BY Campo2, Campo3

"fjmasero" escribió en el mensaje
news:05bf01c48b3d$a9794720$
Wenas:

Quiero sacar los valores de todos los campos del registro
en el que el valor de uno de los cmapos es el mayor de
una tabla.

Select MAX(Campo1), Campo2, Campo3 from Tabla no


funciona.

He tenido que poner

SELECT * FROM Tabla WHERE (Campo1 IN(SELECT MAX(Campo1)
FROM Tabla))

Me parece q algo no está bien, pero no sé si es por el
fin de verano sin vacaciones o pq, pero no me "cuadra".

Espero q alguien pueda decirme algo.

Salu2 y gracias.





.

Respuesta Responder a este mensaje
#4 Salvador Ramos
26/08/2004 - 13:35 | Informe spam
Hola:

Ni en sql standard (ANSI), ni en t-sql funciona nunca la combinación de
funciones de agregación (sum, max, ...) con campos que no formen parte del
group by.

Además es totalmente lógico, ya que no que intentas sacar no tiene sentido
al devolver diferentes cantidades de filas.
no puedes pedir a la vez campos que te devolvería uno por fila de la tabla y
funciones de agregado que te devuelven una fila por tabla (si no utilizas
group by).

Por ejemplo, tenemos una tabla ventas con los campos cliente e importe, y
tenemos 3 filas:
1 1500
2 2000
3 2500

y haces SELECT sum(importe), cliente FROM ventas, te devolvería:
6000 1
???? 2
???? 3

Eso no es válido, siempre hay que devolver el mismo número de filas para
todas las columnas que se utilicen.


Un saludo
Salvador Ramos
Murcia - España
[MVP SQL Server]
www.helpdna.net

"fjmasero" escribió en el mensaje
news:082401c48b55$f87932f0$
HOla Yoli:

Gracias por responder.

Lo q no me cuadra es la forma en q he tenido q hacerlo,
con el select q he indicado, cuando según tengo
entendido, en sql estandard, select max(campo1), campo2
from tabla, si funciona.

Tu select no funciona, pq saca todos los registros (ya lo
había probado).

Salu2

¿Qué es lo que no te cuadra?¿Los resultados?

Prueba a agrupar los resultados:
SELECT MAX(Campo1), Campo2, Campo3
FROM Tabla
GROUP BY Campo2, Campo3

"fjmasero" escribió en el mensaje
news:05bf01c48b3d$a9794720$
Wenas:

Quiero sacar los valores de todos los campos del registro
en el que el valor de uno de los cmapos es el mayor de
una tabla.

Select MAX(Campo1), Campo2, Campo3 from Tabla no


funciona.

He tenido que poner

SELECT * FROM Tabla WHERE (Campo1 IN(SELECT MAX(Campo1)
FROM Tabla))

Me parece q algo no está bien, pero no sé si es por el
fin de verano sin vacaciones o pq, pero no me "cuadra".

Espero q alguien pueda decirme algo.

Salu2 y gracias.





.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida