He pasado la tarde de ayer dándole vueltas y esto es lo mejor que he conseguido:
Hacer una consulta que te pregunte el nombre del trabajador, y una vez introducido, te muestre los datos que pides (últimos 6 meses que trabajó 20 das o más en los últimos dos años)
Pero para que funcione, se necesitan estas premisas:
1º/ Tu campo Mes tiene que tener este formato (o similar) de datos: 2013-09, 2013-08... pues para que la consulta coja los últimos 6 meses ésta tiene que estar ordenada por el campo mes de forma decreciente.
Si en tu campo mes tienes sólo los nombres de los meses, sólo el número de mes, o no tienes el año en primer lugar, no se te ordenarán bien los registros y no obtendrás el resultado esperado.
2º/ Es necesario que exista un campo para el año, bien directamente o creado en la consulta a partir del campo mes, para poder filtrar los dos últimos.
Esta es la SQL de la consulta:
SELECT TOP 6 Tabla1.Nombre, Tabla1.Mes, Tabla1.[total días trabajados], Left$([Mes],4) AS Año
FROM Tabla1
WHERE (((Tabla1.Nombre)=[Introduce el nombre del trabajador]) AND ((Tabla1.[total días trabajados])>=20) AND ((Left$([Mes],4))>Year(Date())-2))
ORDER BY Tabla1.Mes DESC;
Para aplicarla a tu bd, crea una consulta nueva, vete a vista SQL y cópiala, cambiando Tabla1 por el nombre de tu tabla, y si es necesario, también los nombres de los campos.
Te adjunto una mini-bd de ejemplo: http://filebig.net/files/5HBChad3sg