2010-06-25 14 views
5

Hola chicos, tengo el siguiente cuadro estructurado así:consulta SQL, filas distintas necesaria

row structure

Así que, básicamente, como se puede ver, el departamento pasa por el nombre cambia cada par de años. Mira el número 16, por ejemplo. Quiero una consulta de selección que solo obtendrá el nombre cuando la fecha sea máxima. ¿Cómo puedo hacer eso?

+1

¿Qué motor de base de datos? – Blorgbeard

+0

Tabla de acceso, utilizando el acceso 2007 – masfenix

Respuesta

5
select ID, Name from departments o 
where o.thedate= 
    (select max(i.thedate) from departments i where o.id=i.id) 
+0

Gracias, funcionó maravillosamente. – masfenix

0

¿Cuál es la clave principal de esta tabla? Esto hace una sub consulta de la misma tabla con una comparación de nombres.

SELECT 
    id, 
    name, 
    date 
FROM table 
WHERE name = (SELECT TOP 1 name 
       FROM table AS subtable 
       WHERE subtable.name = table.name 
       ORDER BY date DESC) 
1
SELECT ID, 
First(Name) AS FirstOfName, First(DateChange) AS FirstOfDateChange 
FROM departments 
GROUP BY ID 
ORDER BY First(DateChange) DESC; 
+0

+1 para Alt. Solución. El grupo por ID me tiró, pero en este caso, es el campo de datos duplicados. – JeffO

0

SELECT d. * de los departamentos d INNER JOIN (SELECT pk de los departamentos GROUP BY ID HAVING theDate = MAX (theDate)) m EN m.pk = d .pk DONDE [Nombre] = "Departamento"

+0

Esto es mejor que la respuesta aceptada porque ...? –

Cuestiones relacionadas