Использование функции ROW_NUMBER .
SELECT*
FROM(
SELECT Form1.Horse, Form1.Date, Form1.[Mile Rate], Form1.[Beaten M], Form1.Distance, Form1.[M or S], Form1.[Class], Form1.[1Q], Form1.[2Q], Form1.[3Q], Form1.Bar, Form1.Driver, Form1.Comment, Form1.Trainer, Form1.Adj, Form1.[Race%], Form1.[Bell Pos], Form1.Pegs, Form1.[Adj LH], Form1.[M LastL], Form1.[Track]
,ROW_NUMBER() OVER(PARTITION BY Horse ORDER BY Date) rn
FROM Form1
WHERE Horse in ('SOHO PICASSO','LITTLE BITOF FUN','BEEJAYS STAR','MISS STARFIRE','MEDIEVAL MAN','BLUE STONE','SOHO MAJOR PLAYER NZ','HUMBLE FELLA','STARS OF GOLD','MISS SERENA','MISS MARGARETA','NIGHTWATCH STAR','PURE IMAGE','VILLAGE BENNY','CAPTAIN CROISSANT','JESSIE JOAN','THE GLASS CEILING','BROOK PARKS LAST','ANTAGONISTIC NZ')
)T
WHERE rn <= 9
Если ваша БД не поддерживает ROW_NUMBER
, используйте этот запрос:
SELECT Form1.Horse, Form1.Date, Form1.[Mile Rate], Form1.[Beaten M], Form1.Distance, Form1.[M or S], Form1.[Class], Form1.[1Q], Form1.[2Q], Form1.[3Q], Form1.Bar, Form1.Driver, Form1.Comment, Form1.Trainer, Form1.Adj, Form1.[Race%], Form1.[Bell Pos], Form1.Pegs, Form1.[Adj LH], Form1.[M LastL], Form1.[Track]
FROM (
SELECT t1.Horse, t1.Date, COUNT(*) AS rn
FROM Form1 AS t1
INNER JOIN Form1 AS t2
ON t2.Horse = t1.Horse
AND t2.Date >= t1.Date
GROUP BY t1.Horse, t1.Date
HAVING COUNT(*) <= 9
)t
INNER JOIN Form1
ON Form1.Horse = t.Horse
AND Form1.Date = t.Date
Внутренний запрос имитирует ROW_NUMBER и фильтрует строки с rn <= 9
.