consulta select

17/10/2005 - 16:44 por Silgol | Informe spam
tengo una tabla (resumo los datos que importan) que tiene los campos Fecha,
codigo y cantidad.
Sólo necesito identificar un registro por codigo, el de la última fecha de
cada código.
Ej:
10/10/05 0001 2
11/10/05 0001 3
09/10/05 0002 3
10/10/05 0002 55

Sólo necesito seleccionar el dato de ultima fecha de cada código.

como armo el query ?

Gracias !

Preguntas similare

Leer las respuestas

#11 Mauro
18/10/2005 - 17:58 | Informe spam
la consulta esta ok
SELECT
coditm
,MAX(fec_costo) AS UltimaFecha
,COSTO_ACTUAL
,saldo_cant
FROM VALORIZACION_CPP
GROUP BY coditm,
costo_actual,
saldo_cant
order by coditm

si te trae mas de un registro significa que para esa fecha existen varios
costo_actual o saldo_cant por lo que deberias ver cual necesitas
ya que si hay varios y solo queres mostrar uno podes llegar a mostrar el
equivocado, te recomiendo tambien que te interiorizes en los BOL sobre los
distintos tipos
de JOIN y el funcionamiento de group by ya que seguramente necesitaras algo
como lo que hizo alejandro.



"Silgol" wrote in message
news:
El query que corro es:

SELECT coditm, MAX(fec_costo) AS UltimaFecha,
COSTO_ACTUAL, saldo_cant
FROM VALORIZACION_CPP
GROUP BY coditm, costo_actual, saldo_cant
order by coditm

Ahora no da error, pero no hace lo que necesito, traerme un valor por


fecha
y por item


"Mauro" escribió:

> haber pasame la consulta tal cual la estas escribiendo
>
> "Silgol" wrote in message
> news:
> > Sigue dando el mismo mensaje de error
> > La columna 'VALORIZACION_CPP.cantidad' de la lista de selección no es
> > válida, porque no está contenida en una función de agregado ni en la
> cláusula
> > GROUP BY.
> >
> > "Mauro" escribió:
> >
> > > depende si queres sumar o no la columna seria algo asi:
> > > sumando:
> > > > > SELECT codigo, MAX(fecha) as UltimaFecha,sum(cantidad) as


cantidad
> > > > > FROM MITABLA
> > > > > GROUP BY codigo
> > > > > ORDER BY codigo
> > > sin sumar:
> > > > > SELECT codigo, MAX(fecha) as UltimaFecha, cantidad
> > > > > FROM MITABLA
> > > > > GROUP BY codigo,cantidad
> > > > > ORDER BY codigo
> > >
> > >
> > > "Silgol" wrote in message
> > > news:
> > > > Hasta aquí , perfecto.
> > > > Ahora necesito agregar algunos otros campos de la tabla, y el


mensaje
> que
> > > > sale es
> > > >
> > > > La columna (por ejemplo: cantidad) de la lista de selección no es
> válida,
> > > > porque no está contenida en una función de agregado ni en la


cláusula
> > > GROUP BY
> > > >
> > > > "Saul Batista" escribió:
> > > >
> > > > >
> > > > >
> > > > > SELECT codigo, MAX(fecha) as UltimaFecha
> > > > > FROM MITABLA
> > > > > GROUP BY codigo
> > > > > ORDER BY codigo
> > > > >
> > > > >
> > > > >
> > > > > "Silgol" wrote in message
> > > > > news:
> > > > > > Este query me trae todas las filas (ordenadas por


código/fecha)
> > > > > > Yo sólo necesito los registros de la última fecha de cada


código
> > > > > >
> > > > > > "Harold Crow" escribió:
> > > > > >
> > > > > >> select distinct(codigo),fecha from MITABLA
> > > > > >> order by fecha desc
> > > > > >>
> > > > > >> "Silgol" escribió en el
> mensaje
> > > > > >> news:
> > > > > >> > tengo una tabla (resumo los datos que importan) que tiene


los
> > > campos
> > > > > >> > Fecha,
> > > > > >> > codigo y cantidad.
> > > > > >> > Sólo necesito identificar un registro por codigo, el de la
> última
> > > fecha
> > > > > >> > de
> > > > > >> > cada código.
> > > > > >> > Ej:
> > > > > >> > 10/10/05 0001 2
> > > > > >> > 11/10/05 0001 3
> > > > > >> > 09/10/05 0002 3
> > > > > >> > 10/10/05 0002 55
> > > > > >> >
> > > > > >> > Sólo necesito seleccionar el dato de ultima fecha de cada
> código.
> > > > > >> >
> > > > > >> > como armo el query ?
> > > > > >> >
> > > > > >> > Gracias !
> > > > > >>
> > > > > >>
> > > > > >>
> > > > >
> > > > >
> > > > >
> > >
> > >
> > >
>
>
>
Respuesta Responder a este mensaje
#12 Mauro
18/10/2005 - 17:58 | Informe spam
si podes postea los resultados para 1 id y vemos donde esta el error y que
podemos hacer.

"Silgol" wrote in message
news:
El query que corro es:

SELECT coditm, MAX(fec_costo) AS UltimaFecha,
COSTO_ACTUAL, saldo_cant
FROM VALORIZACION_CPP
GROUP BY coditm, costo_actual, saldo_cant
order by coditm

Ahora no da error, pero no hace lo que necesito, traerme un valor por


fecha
y por item


"Mauro" escribió:

> haber pasame la consulta tal cual la estas escribiendo
>
> "Silgol" wrote in message
> news:
> > Sigue dando el mismo mensaje de error
> > La columna 'VALORIZACION_CPP.cantidad' de la lista de selección no es
> > válida, porque no está contenida en una función de agregado ni en la
> cláusula
> > GROUP BY.
> >
> > "Mauro" escribió:
> >
> > > depende si queres sumar o no la columna seria algo asi:
> > > sumando:
> > > > > SELECT codigo, MAX(fecha) as UltimaFecha,sum(cantidad) as


cantidad
> > > > > FROM MITABLA
> > > > > GROUP BY codigo
> > > > > ORDER BY codigo
> > > sin sumar:
> > > > > SELECT codigo, MAX(fecha) as UltimaFecha, cantidad
> > > > > FROM MITABLA
> > > > > GROUP BY codigo,cantidad
> > > > > ORDER BY codigo
> > >
> > >
> > > "Silgol" wrote in message
> > > news:
> > > > Hasta aquí , perfecto.
> > > > Ahora necesito agregar algunos otros campos de la tabla, y el


mensaje
> que
> > > > sale es
> > > >
> > > > La columna (por ejemplo: cantidad) de la lista de selección no es
> válida,
> > > > porque no está contenida en una función de agregado ni en la


cláusula
> > > GROUP BY
> > > >
> > > > "Saul Batista" escribió:
> > > >
> > > > >
> > > > >
> > > > > SELECT codigo, MAX(fecha) as UltimaFecha
> > > > > FROM MITABLA
> > > > > GROUP BY codigo
> > > > > ORDER BY codigo
> > > > >
> > > > >
> > > > >
> > > > > "Silgol" wrote in message
> > > > > news:
> > > > > > Este query me trae todas las filas (ordenadas por


código/fecha)
> > > > > > Yo sólo necesito los registros de la última fecha de cada


código
> > > > > >
> > > > > > "Harold Crow" escribió:
> > > > > >
> > > > > >> select distinct(codigo),fecha from MITABLA
> > > > > >> order by fecha desc
> > > > > >>
> > > > > >> "Silgol" escribió en el
> mensaje
> > > > > >> news:
> > > > > >> > tengo una tabla (resumo los datos que importan) que tiene


los
> > > campos
> > > > > >> > Fecha,
> > > > > >> > codigo y cantidad.
> > > > > >> > Sólo necesito identificar un registro por codigo, el de la
> última
> > > fecha
> > > > > >> > de
> > > > > >> > cada código.
> > > > > >> > Ej:
> > > > > >> > 10/10/05 0001 2
> > > > > >> > 11/10/05 0001 3
> > > > > >> > 09/10/05 0002 3
> > > > > >> > 10/10/05 0002 55
> > > > > >> >
> > > > > >> > Sólo necesito seleccionar el dato de ultima fecha de cada
> código.
> > > > > >> >
> > > > > >> > como armo el query ?
> > > > > >> >
> > > > > >> > Gracias !
> > > > > >>
> > > > > >>
> > > > > >>
> > > > >
> > > > >
> > > > >
> > >
> > >
> > >
>
>
>
Respuesta Responder a este mensaje
#13 Silgol
18/10/2005 - 19:49 | Informe spam
Con el código 00001 da 480 filas, copio algunas

coditm UltimaFecha
COSTO_ACTUAL saldo_cant

00001 2002-04-10 00:00:00.000
2.55234 .00000
00001 2004-01-26 00:00:00.000
3.61175 .00000
00001 2005-05-13 00:00:00.000
4.72418 5.00000
00001 2004-05-13 00:00:00.000
3.67036 11.00000
00001 2005-05-09 00:00:00.000
4.72418 11.00000
00001 2005-05-05 00:00:00.000
4.72419 12.00000
00001 2000-12-28 00:00:00.000
2.34317 14.00000
00001 2004-01-30 00:00:00.000
3.61175 18.00000
"Mauro" escribió:

si podes postea los resultados para 1 id y vemos donde esta el error y que
podemos hacer.

"Silgol" wrote in message
news:
> El query que corro es:
>
> SELECT coditm, MAX(fec_costo) AS UltimaFecha,
> COSTO_ACTUAL, saldo_cant
> FROM VALORIZACION_CPP
> GROUP BY coditm, costo_actual, saldo_cant
> order by coditm
>
> Ahora no da error, pero no hace lo que necesito, traerme un valor por
fecha
> y por item
>
>
> "Mauro" escribió:
>
> > haber pasame la consulta tal cual la estas escribiendo
> >
> > "Silgol" wrote in message
> > news:
> > > Sigue dando el mismo mensaje de error
> > > La columna 'VALORIZACION_CPP.cantidad' de la lista de selección no es
> > > válida, porque no está contenida en una función de agregado ni en la
> > cláusula
> > > GROUP BY.
> > >
> > > "Mauro" escribió:
> > >
> > > > depende si queres sumar o no la columna seria algo asi:
> > > > sumando:
> > > > > > SELECT codigo, MAX(fecha) as UltimaFecha,sum(cantidad) as
cantidad
> > > > > > FROM MITABLA
> > > > > > GROUP BY codigo
> > > > > > ORDER BY codigo
> > > > sin sumar:
> > > > > > SELECT codigo, MAX(fecha) as UltimaFecha, cantidad
> > > > > > FROM MITABLA
> > > > > > GROUP BY codigo,cantidad
> > > > > > ORDER BY codigo
> > > >
> > > >
> > > > "Silgol" wrote in message
> > > > news:
> > > > > Hasta aquí , perfecto.
> > > > > Ahora necesito agregar algunos otros campos de la tabla, y el
mensaje
> > que
> > > > > sale es
> > > > >
> > > > > La columna (por ejemplo: cantidad) de la lista de selección no es
> > válida,
> > > > > porque no está contenida en una función de agregado ni en la
cláusula
> > > > GROUP BY
> > > > >
> > > > > "Saul Batista" escribió:
> > > > >
> > > > > >
> > > > > >
> > > > > > SELECT codigo, MAX(fecha) as UltimaFecha
> > > > > > FROM MITABLA
> > > > > > GROUP BY codigo
> > > > > > ORDER BY codigo
> > > > > >
> > > > > >
> > > > > >
> > > > > > "Silgol" wrote in message
> > > > > > news:
> > > > > > > Este query me trae todas las filas (ordenadas por
código/fecha)
> > > > > > > Yo sólo necesito los registros de la última fecha de cada
código
> > > > > > >
> > > > > > > "Harold Crow" escribió:
> > > > > > >
> > > > > > >> select distinct(codigo),fecha from MITABLA
> > > > > > >> order by fecha desc
> > > > > > >>
> > > > > > >> "Silgol" escribió en el
> > mensaje
> > > > > > >> news:
> > > > > > >> > tengo una tabla (resumo los datos que importan) que tiene
los
> > > > campos
> > > > > > >> > Fecha,
> > > > > > >> > codigo y cantidad.
> > > > > > >> > Sólo necesito identificar un registro por codigo, el de la
> > última
> > > > fecha
> > > > > > >> > de
> > > > > > >> > cada código.
> > > > > > >> > Ej:
> > > > > > >> > 10/10/05 0001 2
> > > > > > >> > 11/10/05 0001 3
> > > > > > >> > 09/10/05 0002 3
> > > > > > >> > 10/10/05 0002 55
> > > > > > >> >
> > > > > > >> > Sólo necesito seleccionar el dato de ultima fecha de cada
> > código.
> > > > > > >> >
> > > > > > >> > como armo el query ?
> > > > > > >> >
> > > > > > >> > Gracias !
> > > > > > >>
> > > > > > >>
> > > > > > >>
> > > > > >
> > > > > >
> > > > > >
> > > >
> > > >
> > > >
> >
> >
> >



Respuesta Responder a este mensaje
#14 Alejandro Mesa
19/10/2005 - 02:41 | Informe spam
Silgol,

Si chequeas el primer mensaje que posteastes, leeras lo siguiente:

> > Sólo necesito identificar un registro por codigo, el de la última fecha de
> > cada código.



Que pasa si mas de una fila tienen la fecha igual a la ultima?. Yo no puedo
dar la respuesta a esa pregunta porque no conozco el negocio. Pudieras tu
decirnos como resolver este caso?. Que otra columna pudieramos usar para
romper el empate de estas filas?

Es una pena que ninguna de las opciones devuelva el resultado que esperas.
Quizas si nos das la estructura de la tabla, datos de ejemplos y los
resultados esperados, podremos darte una solucion que se adapte a tus
necesidades.


AMB



"Silgol" wrote:

con cualquiera de las dos opciones, el resultado no es correcto.
Me devuelve más de una ocurrencia por codigo que tenga la misma fecha, solo
necesito el último



"Alejandro Mesa" escribió:

> Trata:
>
> select *
> from t1 as a
> where fecha = (select max(fecha) from t1 as b where b.codigo = a.codigo)
>
>
> select a.*
> from t1 as a inner join (select codigo, max(fecha) as max_fecha from t1
> group by codigo) as b
> on a.codigo = b.codigo and a.fecha = b.max_fecha
>
>
> AMB
>
> "Silgol" wrote:
>
> > tengo una tabla (resumo los datos que importan) que tiene los campos Fecha,
> > codigo y cantidad.
> > Sólo necesito identificar un registro por codigo, el de la última fecha de
> > cada código.
> > Ej:
> > 10/10/05 0001 2
> > 11/10/05 0001 3
> > 09/10/05 0002 3
> > 10/10/05 0002 55
> >
> > Sólo necesito seleccionar el dato de ultima fecha de cada código.
> >
> > como armo el query ?
> >
> > Gracias !
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida