Foi usado para "materialização intermediária (pesquisa no Google)"
Bom artigo:Adam Machanic:Explorando os segredos da materialização intermediária
Ele até criou um MS Connect para que isso possa ser feito de maneira mais limpa
Minha visão "não é inerentemente ruim", mas não a use a menos que tenha 100% de certeza. O problema é que funciona apenas no momento em que você faz isso e provavelmente não mais tarde (nível de patch, esquema, índice, contagens de linhas etc) ...
Exemplo trabalhado
Isso pode falhar porque você não sabe em que ordem as coisas são avaliadas
SELECT foo From MyTable WHERE ISNUMERIC (foo) = 1 AND CAST(foo AS int) > 100
E isso também pode falhar porque
SELECT foo
FROM
(SELECT foo From MyTable WHERE ISNUMERIC (foo) = 1) bar
WHERE
CAST(foo AS int) > 100
No entanto, isso não aconteceu no SQL Server 2000. A consulta interna é avaliada e colocada em spool:
SELECT foo
FROM
(SELECT TOP 100 PERCENT foo From MyTable WHERE ISNUMERIC (foo) = 1 ORDER BY foo) bar
WHERE
CAST(foo AS int) > 100
Observe que isso ainda funciona no SQL Server 2005
SELECT TOP 2000000000 ... ORDER BY...