Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Problema de consulta en sql

Estas en el tema de Problema de consulta en sql en el foro de SQL Server en Foros del Web. Hola tengo este problema: Tengo dos tablas de la siguiente manera: Tabla1 -Id -Fecha1 Tabla2 -Id -Codarticulo -Precio La consulta de ambas tablas seria una ...
  #1 (permalink)  
Antiguo 30/05/2011, 18:54
 
Fecha de Ingreso: mayo-2011
Mensajes: 6
Antigüedad: 12 años, 10 meses
Puntos: 1
Pregunta Problema de consulta en sql

Hola tengo este problema:
Tengo dos tablas de la siguiente manera:
Tabla1
-Id
-Fecha1


Tabla2
-Id
-Codarticulo
-Precio

La consulta de ambas tablas seria una salida asi:

CodArticulo Fecha1 precio
1 10/05/2011 2.5
1 09/05/2011 1.5
1 08/05/2011 3.5
1 30/04/2011 2.3
2 11/05/2011 5.1
2 07/05/2011 2.8
2 06/05/2011 1.3

como observaran la consulta esta ordenada por articulo y fecha en forma descendente. Lo que deseo es extraer de cada articulo el precio de la fecha mayor. Agruparlo de manera que el resultado sea el siguiente.
1 10/05/2011 2.5
2 11/05/2011 5.1
y asi sucesivamente.
Se puede realizar con Select????
Lo otro seria recorrer la consulta pero deseo evitar eso?
Por favor e intentado de todo con select, Group by, combinaciones de todo tipo y no logro el resultado. Gracias de antemano.
  #2 (permalink)  
Antiguo 31/05/2011, 01:22
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 3 meses
Puntos: 89
Respuesta: Problema de consulta en sql

Postea alguna de las querys que has intentado
  #3 (permalink)  
Antiguo 31/05/2011, 08:16
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Problema de consulta en sql

Un poco rebuscado el query jejejje
Código SQL:
Ver original
  1. CREATE TABLE #temp (
  2. id INT,
  3. fecha datetime
  4. )
  5.  
  6. CREATE TABLE #temp2 (
  7. id INT,
  8. codarticulo INT,
  9. precio INT
  10. )
  11.  
  12.  
  13. INSERT INTO #temp (id,fecha) VALUES (1,getdate()-1)
  14. INSERT INTO #temp (id,fecha) VALUES (2,getdate()-2)
  15. INSERT INTO #temp (id,fecha) VALUES (3,getdate()-3)
  16. INSERT INTO #temp (id,fecha) VALUES (4,getdate()-4)
  17.  
  18. INSERT INTO #temp2 (id,codarticulo,precio) VALUES (1,1,25)
  19. INSERT INTO #temp2 (id,codarticulo,precio) VALUES (2,1,15)
  20. INSERT INTO #temp2 (id,codarticulo,precio) VALUES (3,1,35)
  21. INSERT INTO #temp2 (id,codarticulo,precio) VALUES (4,1,23)
  22. INSERT INTO #temp2 (id,codarticulo,precio) VALUES (1,2,51)
  23. INSERT INTO #temp2 (id,codarticulo,precio) VALUES (2,2,28)
  24. INSERT INTO #temp2 (id,codarticulo,precio) VALUES (3,2,13)
  25.  
  26. SELECT codarticulo,fecha,precio FROM #temp t
  27. INNER JOIN #temp2 t1 ON (t.id=t1.id)
  28. WHERE CONVERT(VARCHAR(20),fecha) + '|' + CONVERT(VARCHAR(20),codarticulo) IN (
  29. SELECT CONVERT(VARCHAR(200),MAX(fecha)) + '|' +  CONVERT(VARCHAR(20),codarticulo) FROM #temp t
  30. INNER JOIN #temp2 t1 ON (t.id=t1.id)
  31. GROUP BY codarticulo
  32. )

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #4 (permalink)  
Antiguo 31/05/2011, 08:37
 
Fecha de Ingreso: mayo-2011
Mensajes: 6
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: Problema de consulta en sql

Problema resuelto

SELECT TOP (100) PERCENT dbo.DetAlmIngIns.IDproinsumo, dbo.DetAlmIngIns.PrecioCosto, dbo.AlmIngIns.FechaIng, dbo.AlmIngIns.FechaReg
FROM dbo.DetAlmIngIns INNER JOIN
dbo.AlmIngIns ON dbo.DetAlmIngIns.IDalmingins = dbo.AlmIngIns.IDalmingins INNER JOIN
(SELECT TOP (100) PERCENT DetAlmIngIns_1.IDproinsumo, MAX(AlmIngIns_1.FechaIng) AS Expr1, MAX(AlmIngIns_1.FechaReg) AS Expr2
FROM dbo.AlmIngIns AS AlmIngIns_1 INNER JOIN
dbo.DetAlmIngIns AS DetAlmIngIns_1 ON AlmIngIns_1.IDalmingins = DetAlmIngIns_1.IDalmingins
WHERE (AlmIngIns_1.Anulado = 0)
GROUP BY DetAlmIngIns_1.IDproinsumo
ORDER BY DetAlmIngIns_1.IDproinsumo, Expr1, Expr2) AS Temp ON dbo.DetAlmIngIns.IDproinsumo = Temp.IDproinsumo AND
dbo.AlmIngIns.FechaIng = Temp.Expr1 AND dbo.AlmIngIns.FechaReg = Temp.Expr2
WHERE (dbo.AlmIngIns.Anulado = 0)
ORDER BY dbo.DetAlmIngIns.IDproinsumo


Dejo el Codigo por si a alguien le interesa
Gracias

Etiquetas: sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:49.