Función MAX

26/05/2004 - 15:18 por Pedro Pérez | Informe spam
Estimados colegas:

Mi pregunta es la siguiente:

Por ejemplo si hago la instrucción
SELECT codigo, descripcion, MAX(fecha), costo FROM detalles WHERE codigo '0101' GROUP BY codigo, descipcion, costo
esta me devuelve todas las líneas de este código sin tomar en cuenta la
función MAX(), pero necesito solo que me devuelva la que tiene la fecha
máxima.
Si lo hago así:

SELECT MAX(fecha) FROM detalles WHERE codigo = '0101'

si lo hace, pero me interesa ver el resultado con las columnas especificadas
en el SELECT anterior,

Cómo podría hacerlo?

Gracias,


Pedro Pérez

Preguntas similare

Leer las respuestas

#1 Gustavo Larriera [MVP SQL]
26/05/2004 - 15:36 | Informe spam
Si lo que deseas es obtener los registros que tengan la fecha máxima, puedes
basarte en esto:

SELECT col1, col2, ...
FROM miTabla
WHERE colfecha = (SELECT MAX(colfecha) FROM miTabla)

Gustavo Larriera, MVP-SQL, MCSE
Uruguay LatAm
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
"Pedro Pérez" wrote in message
news:
Estimados colegas:

Mi pregunta es la siguiente:

Por ejemplo si hago la instrucción
SELECT codigo, descripcion, MAX(fecha), costo FROM detalles WHERE codigo > '0101' GROUP BY codigo, descipcion, costo
esta me devuelve todas las líneas de este código sin tomar en cuenta la
función MAX(), pero necesito solo que me devuelva la que tiene la fecha
máxima.
Si lo hago así:

SELECT MAX(fecha) FROM detalles WHERE codigo = '0101'

si lo hace, pero me interesa ver el resultado con las columnas


especificadas
en el SELECT anterior,

Cómo podría hacerlo?

Gracias,


Pedro Pérez


Respuesta Responder a este mensaje
#2 Pedro Pérez
26/05/2004 - 17:04 | Informe spam
Gracias Gustavo,
quiero hacer otra pregunta y es como puedo hacer
lo siguiente con el mismo ejemplo:


SELECT a.codigo, a.descripcion,
(SELECT d.costo FROM d WHERE d.fecha (SELECT MAX(d.fecha) FROM d WHERE d.codigo = a.codigo) AND d.codigo a.codigo))
FROM a

Lo que deseo es que a todas las líneas contenidas en la tabla "a" buscar el
costo con la fecha
máxima. Cómo puedo hacer referecia del código de la tabla "a" en el
subquery, porque como lo estoy haciendo en el subquery no es lo correcto
porque no tengo referencias co la tabla "a"?

Gracias,

"Gustavo Larriera [MVP SQL]" wrote in message
news:uXOW$
Si lo que deseas es obtener los registros que tengan la fecha máxima,


puedes
basarte en esto:

SELECT col1, col2, ...
FROM miTabla
WHERE colfecha = (SELECT MAX(colfecha) FROM miTabla)

Gustavo Larriera, MVP-SQL, MCSE
Uruguay LatAm
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
"Pedro Pérez" wrote in message
news:
> Estimados colegas:
>
> Mi pregunta es la siguiente:
>
> Por ejemplo si hago la instrucción
> SELECT codigo, descripcion, MAX(fecha), costo FROM detalles WHERE codigo
> '0101' GROUP BY codigo, descipcion, costo
> esta me devuelve todas las líneas de este código sin tomar en cuenta la
> función MAX(), pero necesito solo que me devuelva la que tiene la fecha
> máxima.
> Si lo hago así:
>
> SELECT MAX(fecha) FROM detalles WHERE codigo = '0101'
>
> si lo hace, pero me interesa ver el resultado con las columnas
especificadas
> en el SELECT anterior,
>
> Cómo podría hacerlo?
>
> Gracias,
>
>
> Pedro Pérez
>
>


Respuesta Responder a este mensaje
#3 Gustavo Larriera [MVP SQL]
26/05/2004 - 17:15 | Informe spam
Hola Pedro, fijate si he entendido bien el problema. Ejecuta esto:

create database test
go

use test
go

create table a (codigo int, descripcion varchar(20))
go
create table d (codigo int, fecha datetime, costo int)
go

insert a values (1, 'uno')
insert a values (2, 'dos')
insert a values (3, 'tres')
insert d values (1, '20040501', 100)
insert d values (1, '20040502', 200)
insert d values (1, '20040503', 300)
insert d values (2, '20040501', 1000)
insert d values (2, '20040502', 2000)
insert d values (2, '20040503', 3000)
go

select d.codigo, d.costo, a.descripcion
from d, a
where d.fecha = (select max(fecha) from d d1 where d.codigoÑ.codigo)
and d.codigo = a.codigo

El resultado será:

codigo costo descripcion
1 300 uno
2 3000 dos



Gustavo Larriera, MVP-SQL, MCSE
Uruguay LatAm
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
"Pedro Pérez" wrote in message
news:%
Gracias Gustavo,
quiero hacer otra pregunta y es como puedo hacer
lo siguiente con el mismo ejemplo:


SELECT a.codigo, a.descripcion,
(SELECT d.costo FROM d WHERE d.fecha > (SELECT MAX(d.fecha) FROM d WHERE d.codigo = a.codigo) AND d.codigo > a.codigo))
FROM a

Lo que deseo es que a todas las líneas contenidas en la tabla "a" buscar


el
costo con la fecha
máxima. Cómo puedo hacer referecia del código de la tabla "a" en el
subquery, porque como lo estoy haciendo en el subquery no es lo correcto
porque no tengo referencias co la tabla "a"?

Gracias,

"Gustavo Larriera [MVP SQL]" wrote in message
news:uXOW$
> Si lo que deseas es obtener los registros que tengan la fecha máxima,
puedes
> basarte en esto:
>
> SELECT col1, col2, ...
> FROM miTabla
> WHERE colfecha = (SELECT MAX(colfecha) FROM miTabla)
>
> Gustavo Larriera, MVP-SQL, MCSE
> Uruguay LatAm
> Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
> derecho / This posting is provided "AS IS" with no warranties, and


confers
> no rights.
> "Pedro Pérez" wrote in message
> news:
> > Estimados colegas:
> >
> > Mi pregunta es la siguiente:
> >
> > Por ejemplo si hago la instrucción
> > SELECT codigo, descripcion, MAX(fecha), costo FROM detalles WHERE


codigo
> > > '0101' GROUP BY codigo, descipcion, costo
> > esta me devuelve todas las líneas de este código sin tomar en cuenta


la
> > función MAX(), pero necesito solo que me devuelva la que tiene la


fecha
> > máxima.
> > Si lo hago así:
> >
> > SELECT MAX(fecha) FROM detalles WHERE codigo = '0101'
> >
> > si lo hace, pero me interesa ver el resultado con las columnas
> especificadas
> > en el SELECT anterior,
> >
> > Cómo podría hacerlo?
> >
> > Gracias,
> >
> >
> > Pedro Pérez
> >
> >
>
>


Respuesta Responder a este mensaje
#4 Pedro Pérez
26/05/2004 - 18:03 | Informe spam
Exacto!!!!!!!!!!!
Muchas gracias Gustavo.


"Gustavo Larriera [MVP SQL]" wrote in message
news:%
Hola Pedro, fijate si he entendido bien el problema. Ejecuta esto:

create database test
go

use test
go

create table a (codigo int, descripcion varchar(20))
go
create table d (codigo int, fecha datetime, costo int)
go

insert a values (1, 'uno')
insert a values (2, 'dos')
insert a values (3, 'tres')
insert d values (1, '20040501', 100)
insert d values (1, '20040502', 200)
insert d values (1, '20040503', 300)
insert d values (2, '20040501', 1000)
insert d values (2, '20040502', 2000)
insert d values (2, '20040503', 3000)
go

select d.codigo, d.costo, a.descripcion
from d, a
where d.fecha = (select max(fecha) from d d1 where d.codigoÑ.codigo)
and d.codigo = a.codigo

El resultado será:

codigo costo descripcion
1 300 uno
2 3000 dos



Gustavo Larriera, MVP-SQL, MCSE
Uruguay LatAm
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
"Pedro Pérez" wrote in message
news:%
> Gracias Gustavo,
> quiero hacer otra pregunta y es como puedo hacer
> lo siguiente con el mismo ejemplo:
>
>
> SELECT a.codigo, a.descripcion,
> (SELECT d.costo FROM d WHERE d.fecha > > (SELECT MAX(d.fecha) FROM d WHERE d.codigo = a.codigo) AND d.codigo
> a.codigo))
> FROM a
>
> Lo que deseo es que a todas las líneas contenidas en la tabla "a" buscar
el
> costo con la fecha
> máxima. Cómo puedo hacer referecia del código de la tabla "a" en el
> subquery, porque como lo estoy haciendo en el subquery no es lo correcto
> porque no tengo referencias co la tabla "a"?
>
> Gracias,
>
> "Gustavo Larriera [MVP SQL]" wrote in message
> news:uXOW$
> > Si lo que deseas es obtener los registros que tengan la fecha máxima,
> puedes
> > basarte en esto:
> >
> > SELECT col1, col2, ...
> > FROM miTabla
> > WHERE colfecha = (SELECT MAX(colfecha) FROM miTabla)
> >
> > Gustavo Larriera, MVP-SQL, MCSE
> > Uruguay LatAm
> > Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga


ningun
> > derecho / This posting is provided "AS IS" with no warranties, and
confers
> > no rights.
> > "Pedro Pérez" wrote in message
> > news:
> > > Estimados colegas:
> > >
> > > Mi pregunta es la siguiente:
> > >
> > > Por ejemplo si hago la instrucción
> > > SELECT codigo, descripcion, MAX(fecha), costo FROM detalles WHERE
codigo
> > > > > '0101' GROUP BY codigo, descipcion, costo
> > > esta me devuelve todas las líneas de este código sin tomar en cuenta
la
> > > función MAX(), pero necesito solo que me devuelva la que tiene la
fecha
> > > máxima.
> > > Si lo hago así:
> > >
> > > SELECT MAX(fecha) FROM detalles WHERE codigo = '0101'
> > >
> > > si lo hace, pero me interesa ver el resultado con las columnas
> > especificadas
> > > en el SELECT anterior,
> > >
> > > Cómo podría hacerlo?
> > >
> > > Gracias,
> > >
> > >
> > > Pedro Pérez
> > >
> > >
> >
> >
>
>


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