Как вы говорите, вам требуется перекрестное соединение с таблицей q2, которое должно меняться в зависимости от значения s1.sku каждой записи таблицы s1, что недопустимо.
Я думаю, вы должны поместить подзапрос q2 как столбец, а не как таблицу. Поскольку вы извлекаете одно значение, его можно легко выразить так:
SELECT s1.SkuApexId, s1.sku, s1.apex, s1.btw, s1.gebruikernr,
(SELECT MAX(s2.begindatum)
FROM tblskuapex s2
WHERE s1.sku = s2.sku) as maxbegindatum
FROM tblSkuApex AS s1
или даже лучше, почему вы не получаете его как обычную агрегацию, поскольку вы запрашиваете максимум из той же таблицы:
SELECT
s1.SkuApexId, s1.sku, s1.apex,
s1.btw, s1.gebruikernr, MAX(begindatum)
FROM tblSkuApex AS s1
group by
s1.SkuApexId, s1.sku, s1.apex,
s1.btw, s1.gebruikernr
примечание: вы можете опустить псевдоним s1 везде