O desafio que vejo com a solução:
FROM(
SELECT top(100) *
FROM Customers
UNION
SELECT top(100) *
FROM CustomerEurope
UNION
SELECT top(100) *
FROM CustomerAsia
UNION
SELECT top(100) *
FROM CustomerAmericas
)
é que isso cria um conjunto de dados em janela que residirá na RAM e, em conjuntos de dados maiores, essa solução criará problemas graves de desempenho, pois deve primeiro criar a partição e usar a partição para gravar na tabela temporária.
Uma solução melhor seria a seguinte:
SELECT top(100)* into #tmpFerdeen
FROM Customers
Insert into #tmpFerdeen
SELECT top(100)*
FROM CustomerEurope
Insert into #tmpFerdeen
SELECT top(100)*
FROM CustomerAsia
Insert into #tmpFerdeen
SELECT top(100)*
FROM CustomerAmericas
para selecionar inserir na tabela temporária e adicionar linhas adicionais. No entanto, a desvantagem aqui é se houver alguma linha duplicada nos dados.
A melhor solução seria a seguinte:
Insert into #tmpFerdeen
SELECT top(100)*
FROM Customers
UNION
SELECT top(100)*
FROM CustomerEurope
UNION
SELECT top(100)*
FROM CustomerAsia
UNION
SELECT top(100)*
FROM CustomerAmericas
Este método deve funcionar para todos os propósitos que requerem linhas distintas. Se, no entanto, você deseja que as linhas duplicadas simplesmente troquem UNION por UNION ALL
Boa sorte!