SQL Server - No duplicar registros en una consulta con joins

 
Vista:

No duplicar registros en una consulta con joins

Publicado por José (3 intervenciones) el 20/06/2019 19:19:40
Buen día,

Tengo la siguiente consulta que me da la fecha de la compra mas reciente, una fecha por articulo, sin repetir el articulo (11,675 registros)

1
2
3
4
5
6
select a.Articulo,max(b.FechaEmision) from Art a
left join CompraD c on a.Articulo=c.Articulo
left join Compra b on b.id=c.id
where a.Articulo like 'ln%'
group by a.Articulo
order by a.Articulo

Pero le quiero agregar que también me de el costo de la fecha de la compra, por lo que le agrego el campo de costo a mi consulta, quedando de la siguiente manera, pero me repite los artículos con diferentes costos (29,434)

1
2
3
4
5
6
select a.Articulo,max(b.FechaEmision),c.Costo from Art a
left join CompraD c on a.Articulo=c.Articulo
left join Compra b on b.id=c.id
where a.Articulo like 'ln%'
group by a.Articulo,c.Costo
order by a.Articulo

Hay alguna manera de que me de el costo de la fecha que me arroja, cabe mencionar que la fecha de la compra solo esta en la tabla Compra y el costo del articulo solo esta en la tabla CompraD
Espero me puedan apoyar.
Muchas gracias.
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: 32
Ha aumentado 1 puesto en SQL Server (en relación al último mes)
Gráfica de SQL Server

No duplicar registros en una consulta con joins

Publicado por Luis Horacio (13 intervenciones) el 20/06/2019 20:46:19
Buenas tardes,

Prueba con esto

1
2
3
4
5
6
7
8
select a.Articulo, Cons2.FechaEmision from Art a
inner join
	(select cons.Articulo,b.FechaEmision from Compra b
	inner join
		(select c.Articulo, max(c.Id) from CompraD c group by c.Articulo) Cons
	on b.Id = Cons.Id) Cons2
on a.Articulo = Cons2.Articulo
where a.Articulo like 'ln%'
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

No duplicar registros en una consulta con joins

Publicado por José (3 intervenciones) el 20/06/2019 23:13:33
Muchas gracias por tu respuesta, ya ejecute el código que me pasaste pero me marca el siguiente error

Msg 8155, Level 16, State 2, Line 6
No column name was specified for column 2 of 'Cons'.
Msg 207, Level 16, State 1, Line 6
Invalid column name 'Id'.

Lo que estoy usando es el SQL server
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
Imágen de perfil de Javier
Val: 111
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

No duplicar registros en una consulta con joins

Publicado por Javier (45 intervenciones) el 21/06/2019 00:21:01
Checa si te sirve ordenando por fecha de emisión descendente y TOP(1), sin el MAX
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

No duplicar registros en una consulta con joins

Publicado por José (3 intervenciones) el 21/06/2019 01:19:25
Muchas gracias por tu respuesta, pero si solo le hago el top 1 me toma solo 1 registro en mi consulta o como te refieres que lo ponga?

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
sin imagen de perfil
Val: 32
Ha aumentado 1 puesto en SQL Server (en relación al último mes)
Gráfica de SQL Server

No duplicar registros en una consulta con joins

Publicado por Luis Horacio (13 intervenciones) el 21/06/2019 14:12:38
buen día, esta es la corrección

1
2
3
4
5
6
7
8
select a.Articulo, Cons2.FechaEmision from Art a
inner join
	(select cons.Articulo,b.FechaEmision from Compra b
	inner join
		(select c.Articulo, max(c.Id) as id from CompraD c group by c.Articulo) Cons
	on b.Id = Cons.Id) Cons2
on a.Articulo = Cons2.Articulo
where a.Articulo like 'ln%'
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