Это явно не разрешено на SQL сервере. Запрос либо возвращает набор результатов, либо (исключительно) присваивает переменные, но не то и другое.
Интересно, зачем вам использовать CTE или переменные в этом примере. Простой подзапрос кажется достаточно простым:
Select t2.*
from MyTbl2 t2
where t2.qty = (select count(*) from mytable t);
CTE в SQL Server не дает преимуществ в производительности. И я не вижу никаких преимуществ "ясности кода" в их использовании в этом случае.