Невозможно параметризовать TOP значением из другой таблицы.
. Вы можете использовать функцию ранжирования
SELECT *
FROM X
INNER JOIN
(
SELECT ROW_NUMBER() OVER (ORDER BY SomeVal) as rn, *
FROM Y
) AS Z ON X.ID = Z.X_ID
WHERE
Z.rn <= X.IntegerAmount)
. Или вам придется сделать производный запрос UDF с@ topparameter
Примечание: вам все равно нужен ORDER BY
Возможно, есть лучшие способы сделать то, что вы действительно хотите: это ответ на то, что вы на самом деле спросили, что, вероятно, не то же самоевещь ...