No post anterior sobre SQL, introduzimos os conceitos de programação com esta linguagem, vimos seus elementos, como criar variáveis e utilizá-las em consultas.
Dando continuidade, neste vamos além, veremos como utilizar as variáveis para criar tabelas temporárias e como elas podem auxiliar e agilizar suas queries diárias.
CRIANDO TABELA TEMPORÁRIA
Criar este tipo de tabela é tão simples quanto uma física bastando acrescentar um símbolo antes do nome.

Sempre que vamos criar uma tabela temporária via CREATE TABLE temos de utilizar o sinal # ou ##. O sinal de hashtag duplo indica que aquela é uma tabela global.

Esse erro ocorre devido o fato desta tabela não ser do tipo global, que é uma propriedade do duplo ## (hashtag).
Ainda sobre as tabelas variáveis locais, quando criamos, independente da ‘posição’ que ela foi criada, é possível selecioná-la em qualquer momento, desde que esteja na conexão que a criou.

Para deixar claro, primeiro eu criei a tabela e depois inseri. O select só foi executado após e em outra posição, neste caso, antes do bloco de criação.
TABELA GLOBAL
Quando tratamos de tabela temporal global, o conceito lógico é o mesmo só tenha em mente que qualquer um pode alterar a tabela e modificar sua estrutura ou os dados.

Agora, mostrarei o exemplo de uma alteração nos dados desta tabela por outra conexão.

Voltando para outra conexão e executando um select nesta tabela.

Deixo claro que estas tabelas quando criadas, ficam armazenadas no TempDB, que é um banco para objetos temporários que geralmente armazena estes objetos na memória. Cuidado com seu uso.
As tabelas temporárias são eliminadas quando não há uma atividade direta nestas ou quando a conexão que a criou se encerra. Além, é possível executar o drop table #nometabela.
TABELA COMO VARIÁVEL
Outra opção quando trabalhamos com este tipo de tabela é criar uma tabela como se ela fosse uma variável de um comando. O procedimento é basicamente o mesmo, mudando apenas que devemos declarar como tabela.

É importante destacar que por se tratar de uma variável, somente os comandos dentro deste bloco podem selecionar a tabela. Do contrário, irá acusar erro.
Uma forma mais ágil de ‘armazenar’ esse tipo de tabela é criando um Type que seria um objeto de declaração que podemos utilizar em qualquer momento.

EXEMPLOS
Abaixo, um pequeno relatório criado para os produtos vendidos separados por ano armazenado em uma tabela temporária.

Outro exemplo que pode agilizar seu processo é criar uma tabela temporária para armazenar dados de um banco A para inserir no banco B de forma mais ágil.

E no próxima imagem, inserindo no bando AdventureWorks os dados que foram inseridos na tabela temporária.

RESUMO
Neste post vimos recursos de como criar tabelas temporárias e variáveis que podem armazenar resultados de consultas ou servir para apoiar operações entre tabelas.
É bom entender que esse tipo de recurso faz um dump dos dados na memória para serem consultados de forma mais rápida economizando acesso a disco.
Preste atenção somente ao crescimento do TempDB pois é ele quem gerencia estes objetos utilizados no banco.
Gostou?! Obrigado pela visita!
Link para o Script.