Ну, один из способов сделать это - использовать динамический sql
сначала создайте строку запроса, а затем выполните ее. Таким образом, вы получите полный контроль
declare query nvarchar(max)
set query = 'SELECT * FROM A
UNION ALL
SELECT * FROM B
UNION ALL '
IF @type = 1
BEGIN
set query = query + '
SELECT * FROM C'
END
ELSE
BEGIN
set query = query + '
SELECT * FROM D'
END
set query = 'UNION ALL
SELECT * FROM E'
exec(query)