SQL Server - Como puedo hacer esta consulta....

 
Vista:

Como puedo hacer esta consulta....

Publicado por Marcelo (1 intervención) el 17/06/2005 02:01:32
Hola Gente: espero poder expresar con palabras lo que intento hacer y no puedo. El tema es el siguiente: mediante una consulta que me devuelve un resultado con campos idservicio, agente, ubicacionori, fechadealta

(SELECT s.idservicioagente, s.Agente ,s.ubicacionorig, s.FechaAlta
FROM ServiciosAgentes s INNER JOIN Organizaciones o ON s.UbicacionOrig=o.IDOrganizaciones
ORDER BY s.Agente,s.ubicacionorig,s.fechaalta)

id agente ubicacionorig fechaalta
ej: 1 1000 laplata 12-12-2003
2 1000 laplata 02-04-2005
3 2000 laplata 14-03-2004
4 2000 bsas 15-10-2004
5 2000 bsas 01-02-2005

necesito sacar de esa consulta solo los agentes que que estan en una ubicacionorig
pero con la fechadealta menor, es decir, del ej.: saldrian el registro 1 , 3 y 4
el 1 porque la fechadealta del agente 1000 en esa misma ubicacionorig es la menor, el 3
porque solo el agente 2000 esta en esa ubicacionorig y el 4 porque el agente 2000 en la ubicacionorgi bsas es la fechadealta menor.

Es posible hacer una consulta que arroje ese resultado que pretendo o hay que hacerlo mediante procedimiento almacenado recorriendo esa tabla resultante con un cursor y demas?

Desde ya muchas gracias por su tiempo y disculpen si no he sabido expresar lo que necesito.

Cordiales Saludos
Marcelo Otero

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

RE:Como puedo hacer esta consulta....

Publicado por Liliana (151 intervenciones) el 17/06/2005 13:13:18
Hola Marcelo,
La consulta puede ser esta:

SELECT MIN(idservicioagente), agente, ubicacionorig, min(fechaalta)
FROM #tabla
GROUP BY agente, ubicacionorig

Te recomendaría pensar en los procedimientos almacenados como una forma de optimizar el uso de recursos, no es más que una consulta común y corriente pero con la ventaja de tener un plan de ejecución almacenado y con código reutilizable.
Esto no tiene nada que ver con los cursores, que en MS SQL SERVER no son una herramienta válida a la hora de desarrollar, salvo muy honrosas excepciones, que dificilmente se den en una aplicación.
Un detalle más, para que veas que los procedimientos almacenados no son nada del otro mundo, el código anterior puede almacenarse así:

CREATE PROC proc_agente
AS
SELECT MIN(idservicioagente), agente, ubicacionorig, min(fechaalta)
FROM #tabla
GROUP BY agente, ubicacionorig
GO

Saludos, Liliana.
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