SQL Server - Ayuda obteniendo ultimo registro de un codigo

 
Vista:

Ayuda obteniendo ultimo registro de un codigo

Publicado por Jhonatan Ruiz (4 intervenciones) el 24/04/2018 23:32:11
Hola buenos dias solicito una ayuda o guia para tratar de resolver una consulta en sql, cabe notar que soy nuevo en este mundo; estoy tratando realizar una consulta que muestre el ultimo registro por codigo de item es decir tengo unos valores como codigo de item, fecha y costo, necesito estructurar una consulta que me de el ultimo registro de ese item en base al costo maximo y la fecha.

Este es el ejemplo de mi codigo.

1
2
3
4
5
6
7
8
9
select CodItem, Descrip1, Costo, convert(varchar(10),FechaE,105)   as [Fecha de Compra], NumeroD, TipoCom, CodProv, Cantidad
 
from saitemcom
 
group by CodItem, Descrip1, Costo, FechaE, NumeroD, TipoCom, CodProv, Cantidad
 
having TipoCom = 'H'
 
order by CodItem,FechaE	Desc

Y mi resultado arrojado es este:

CodItem Descrip1 Costo Fecha de Compra NumeroD TipoCom CodProv Cantidad
00001 Porta Vaso Ram 159.51000 09-06-2011 00000051 H 313816680 2.00000
00001 Porta Vaso Ram 333.34000 11-03-2011 00001388 H 29849302-0 6.00000
00001 Porta Vaso Ram 210.88000 17-07-2009 00000980 H 314418777 2.00000
00004 Porta Ipod Ram 276.48000 17-07-2009 00000980 H 314418777 1.00000
00005 Porta Iphone Ram 100000.00000 22-04-2017 000053 H 404366709 2.00000
00005 Porta Iphone Ram 276.48000 17-07-2009 00000980 H 314418777 1.00000
000164 Manilla Compuerta Chevrolet Silverado ce 166.50000 26-05-2010 00000201 H 29849302-0 1.00000
00031 Rejilla Stop Toyota Corolla 09 266.07000 26-05-2010 00000201 H 29849302-0 1.00000
001-031 Alarma Up-Grade Alsama 38094.86000 23-11-2016 0000024 H 407318675 5.00000
001-031 Alarma Up-Grade Alsama 31745.72000 22-11-2016 002 H 407318675 1.00000

Ahora si pueden ver el código 00001 se repite varias veces yo necesito de ese código el ultimo registro con el valor mas alto y obviamente la fecha y asi sucesivamente con los demas codigos como por ejemplo el 001-0031 o el 000005 que también presenta el mismo caso.

Pero no se que buscar para poder hacer esta consulta no consigo lograrlo ni con group by, ni con max porque entonces este me muestra un solo registro de toda la tabla y no uno de cada uno ni con last_value; no se si es que no estoy agrupando de la forma correcta.

Me podrian por favor chicos y chicas del foro!.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 67
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Ayuda obteniendo ultimo registro de un codigo

Publicado por Ana (34 intervenciones) el 25/04/2018 10:05:34
Buenos días,

Prueba a poner un where, he realizado una prueba y creo que sale como comentas:

1
2
3
4
5
6
SELECT      SA.CodItem, SA.Descrip1, SA.Costo, SA.Fecha, SA.NumeroD, SA.TipoCom, SA.CodProv, SA.Cantidad
FROM          saitemcom S
	             INNER JOIN saitemcom SA ON SA.codItem = S.codItem AND
					SA.cantidad = (SELECT MAX(cantidad) FROm saitemcom WHERE codItem = SA.codItem)
WHERE       S.tipoCom = 'H'
GROUP BY SA.CodItem, SA.Descrip1, SA.Costo, SA.Fecha, SA.NumeroD, SA.TipoCom, SA.CodProv, SA.Cantidad

No se si te valdrá.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda obteniendo ultimo registro de un codigo

Publicado por Jhonatan Ruiz (4 intervenciones) el 25/04/2018 13:29:44
Realice la prueba pero en el foro de stackoverflow me respondieron con el ejemplo de un articulo que me sirvio de mucho les comparto el enlace de ese articulo.

http://www.cryer.co.uk/brian/sql/sql_first_record_per_group.htm

Mi codigo quedo asi.

1
2
3
4
5
6
7
8
select it.coditem, it.descrip1, it.costo, it.cantidad, CONVERT(DATE,it.fechae,105) as FechaUC
 
from saitemcom it
 
inner join ( select coditem, max(FechaE) as UltimaFC from saitemcom group by coditem) inside on inside.coditem = it.coditem
and inside.UltimaFC = it.fechae
 
order by CodItem

De este modo pude tener el ultimo registro de cada compra por articulo.

Muchas gracias por el tiempo que se tomaron.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar