Well, one way to do this is to use dynamic sql
first create a query string and then run it. So you have full control
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)
source
share