Ayuda en Consulta

27/03/2008 - 22:14 por Jorge | Informe spam
Hola a todos
Una ayuda para hacer una consulta.
Lo que necesito es devolver los 2 ultimos contratos ingresados por cada
auditor.

Tengo la tabla AUDITOR
COD NOM
1 AUDITOR 1
2 AUDITOR 2
3 AUDITOR 3

Y la tabla CONTRATO
NUM CONT COD FEC
1 CONT 1 1 2008-03-21 14:40:04.000
2 CONT 2 1 2008-03-21 14:47:04.000
3 CONT 3 2 2008-03-21 15:17:04.000
4 CONT 4 1 2008-03-22 16:22:04.000
5 CONT 5 2 2008-03-22 16:28:04.000
6 CONT 6 3 2008-03-24 14:04:04.000
7 CONT 7 2 2008-03-25 15:12:04.000
8 CONT 8 2 2008-03-25 15:26:04.000
9 CONT 9 3 2008-03-25 15:38:04.000

Estas 2 tablas se relacionan por el campo COD.

Si hago este query:
SELECT C.COD,A.NOM,C.NUM,C.CON,C.FEC
FROM CONTRATO C INNER JOIN AUDITOR A ON C.COD=A.COD
ORDER BY C.COD,C.FEC DESC

Me devuelve esto:
COD NOM NUM CON FEC

1 AUDITOR 1 4 CONT 4 2008-03-22 16:22:04.000
1 AUDITOR 1 2 CONT 2 2008-03-21 14:47:04.000
1 AUDITOR 1 1 CONT 1 2008-03-21 14:40:04.000
2 AUDITOR 2 8 CONT 8 2008-03-25 15:26:04.000
2 AUDITOR 2 7 CONT 7 2008-03-25 15:12:04.000
2 AUDITOR 2 5 CONT 5 2008-03-22 16:28:04.000
2 AUDITOR 2 3 CONT 3 2008-03-21 15:17:04.000
3 AUDITOR 3 9 CONT 9 2008-03-25 15:38:04.000
3 AUDITOR 3 6 CONT 6 2008-03-24 14:04:04.000

Lo que yo quiero obtener es: (los 2 ultimos contratos ingresados por cada
auditor)
COD NOM NUM CON FEC
-
1 AUDITOR 1 4 CONT 4 2008-03-22 16:22:04.000
1 AUDITOR 1 2 CONT 2 2008-03-21 14:47:04.000
2 AUDITOR 2 8 CONT 8 2008-03-25 15:26:04.000
2 AUDITOR 2 7 CONT 7 2008-03-25 15:12:04.000
3 AUDITOR 3 9 CONT 9 2008-03-25 15:38:04.000
3 AUDITOR 3 6 CONT 6 2008-03-24 14:04:04.000

¿Como hago?

Disculpen lo extenso del mail.

Saludos y gracias
JORGE G:
 

Leer las respuestas

#1 Isaias
28/03/2008 - 17:25 | Informe spam
** Basado en una version de Alejandro Mesa **

CREATE TABLE #PRUEBAS (NUM INT, CONT CHAR(10), COD INT, FEC DATETIME)

INSERT INTO #PRUEBAS VALUES(1,'CONT 1',1,'2008-03-21 14:40:04.000')
INSERT INTO #PRUEBAS VALUES(2,'CONT 2',1,'2008-03-21 14:47:04.000')
INSERT INTO #PRUEBAS VALUES(3,'CONT 3',2,'2008-03-21 15:17:04.000')
INSERT INTO #PRUEBAS VALUES(4,'CONT 4',1,'2008-03-22 16:22:04.000')
INSERT INTO #PRUEBAS VALUES(5,'CONT 5',2,'2008-03-22 16:28:04.000')
INSERT INTO #PRUEBAS VALUES(6,'CONT 6',3,'2008-03-24 14:04:04.000')
INSERT INTO #PRUEBAS VALUES(7,'CONT 7',2,'2008-03-25 15:12:04.000')
INSERT INTO #PRUEBAS VALUES(8,'CONT 8',2,'2008-03-25 15:26:04.000')
INSERT INTO #PRUEBAS VALUES(9,'CONT 9',3,'2008-03-25 15:38:04.000')


select *
from #PRUEBAS as a
where (
select count(*)
from #PRUEBAS as b
where b.COD = a.COD and b.FEC >= a.FEC
) <= 3
order by COD

1 CONT 1 1 2008-03-21 14:40:04.000
2 CONT 2 1 2008-03-21 14:47:04.000
4 CONT 4 1 2008-03-22 16:22:04.000
5 CONT 5 2 2008-03-22 16:28:04.000
7 CONT 7 2 2008-03-25 15:12:04.000
8 CONT 8 2 2008-03-25 15:26:04.000
9 CONT 9 3 2008-03-25 15:38:04.000
6 CONT 6 3 2008-03-24 14:04:04.000

¿Esto es lo que buscas?

Saludos
IIslas


"Jorge" wrote:

Hola a todos
Una ayuda para hacer una consulta.
Lo que necesito es devolver los 2 ultimos contratos ingresados por cada
auditor.

Tengo la tabla AUDITOR
COD NOM
1 AUDITOR 1
2 AUDITOR 2
3 AUDITOR 3

Y la tabla CONTRATO
NUM CONT COD FEC
1 CONT 1 1 2008-03-21 14:40:04.000
2 CONT 2 1 2008-03-21 14:47:04.000
3 CONT 3 2 2008-03-21 15:17:04.000
4 CONT 4 1 2008-03-22 16:22:04.000
5 CONT 5 2 2008-03-22 16:28:04.000
6 CONT 6 3 2008-03-24 14:04:04.000
7 CONT 7 2 2008-03-25 15:12:04.000
8 CONT 8 2 2008-03-25 15:26:04.000
9 CONT 9 3 2008-03-25 15:38:04.000

Estas 2 tablas se relacionan por el campo COD.

Si hago este query:
SELECT C.COD,A.NOM,C.NUM,C.CON,C.FEC
FROM CONTRATO C INNER JOIN AUDITOR A ON C.COD=A.COD
ORDER BY C.COD,C.FEC DESC

Me devuelve esto:
COD NOM NUM CON FEC

1 AUDITOR 1 4 CONT 4 2008-03-22 16:22:04.000
1 AUDITOR 1 2 CONT 2 2008-03-21 14:47:04.000
1 AUDITOR 1 1 CONT 1 2008-03-21 14:40:04.000
2 AUDITOR 2 8 CONT 8 2008-03-25 15:26:04.000
2 AUDITOR 2 7 CONT 7 2008-03-25 15:12:04.000
2 AUDITOR 2 5 CONT 5 2008-03-22 16:28:04.000
2 AUDITOR 2 3 CONT 3 2008-03-21 15:17:04.000
3 AUDITOR 3 9 CONT 9 2008-03-25 15:38:04.000
3 AUDITOR 3 6 CONT 6 2008-03-24 14:04:04.000

Lo que yo quiero obtener es: (los 2 ultimos contratos ingresados por cada
auditor)
COD NOM NUM CON FEC
-
1 AUDITOR 1 4 CONT 4 2008-03-22 16:22:04.000
1 AUDITOR 1 2 CONT 2 2008-03-21 14:47:04.000
2 AUDITOR 2 8 CONT 8 2008-03-25 15:26:04.000
2 AUDITOR 2 7 CONT 7 2008-03-25 15:12:04.000
3 AUDITOR 3 9 CONT 9 2008-03-25 15:38:04.000
3 AUDITOR 3 6 CONT 6 2008-03-24 14:04:04.000

¿Como hago?

Disculpen lo extenso del mail.

Saludos y gracias
JORGE G:



Preguntas similares