Если принять, что дата в строках 5-8 должна быть другая, то решение может быть таким (Table_4 просто случайное название для исходной таблицы):
SELECT Table4.fdate, First(Table4.s_1) AS FirstOfs_1, First(Table4_1.s_2) AS FirstOfs_2, First(Table4_2.s_3) AS FirstOfs_3, First(Table4_3.s_4) AS FirstOfs_4
FROM Table4 AS Table4_3 INNER JOIN (Table4 AS Table4_2 INNER JOIN (Table4 AS Table4_1 INNER JOIN Table4 ON Table4_1.fdate = Table4.fdate) ON Table4_2.fdate = Table4.fdate) ON Table4_3.fdate = Table4.fdate
WHERE (((Table4.s_1) Is Not Null) AND ((Table4_1.s_2) Is Not Null) AND ((Table4_2.s_3) Is Not Null) AND ((Table4_3.s_4) Is Not Null))
GROUP BY Table4.fdate;
Для произвольного количества столбцов только могу предложить генерировать запрос программно. Можно решить эту задачу с помощью другого запроса, но там тоже требуется явно задавать столбцы. Я не знаю способа работы с произвольным количеством столбцов. Может, специалисты ещё подскажут.