o Que é uma Expressão de Tabela Comum

Uma Expressão de Tabela Comum, também chamada de CTE em forma breve, é temporário, chamado de conjunto de resultados que você pode fazer referência dentro de um SELECT, INSERT, UPDATE, ou DELETE instrução. O CTE também pode ser usado em uma vista.

neste artigo, veremos em detalhe como criar e usar os CTEs do nosso servidor SQL.,

sintaxe e exemplos para expressões de tabela comuns

a consulta CTE começa com um” com ” e é seguido pelo nome da expressão. Estaremos usando este nome de expressão em nossa consulta selecionada para exibir o resultado de nossa consulta CTE e estar escrevendo nossa definição de consulta CTE.,

1
2
3
4
5

WITH expression_name ) ]
AS
( CTE_query_definition )

To view the CTE result we use a Select query with the CTE expression name.,r

1
2
3

Select * from expression_name

Common Table Expression (CTE) Types

There are two types of CTEs: Recursive and Non-Recursive

Non-Recursive CTEs

Non-Recursive CTEs are simple where the CTE doesn’t use any recursion, or repeated processing in of a sub-routine., Vamos criar um CTE simples não-recursivo para exibir o número da linha de 1 a 10.

de acordo com a sintaxe CTE cada consulta CTE irá começar com um “com” seguido pelo nome da expressão CTE com lista de colunas.

aqui temos usado apenas uma coluna como ROWNO. Em seguida, a parte da consulta, Aqui nós escrevemos nossa consulta selecionada a ser executada para o nosso CTE. Depois de criar a nossa consulta CTE para executar o CTE use a instrução select com o nome da expressão CTE.saída

: quando executamos a consulta, podemos ver a saída abaixo.,

CTE recursivo

CTEs recursivos são usados loops processuais repetidos aka recursão. A consulta recursiva se chama até que a consulta satisfez a condição. Em um CTE recursivo nós devemos fornecer uma condição onde terminar a recursão.:

veremos como criar uma consulta recursiva simples para mostrar o número da linha de 1 a 10 usando um CTE.

primeiramente declaramos a variável inteira como” RowNo “e definimos o valor padrão como 1 e criamos nossa primeira consulta CTE como um nome de expressão,”ROWCTE”., Em nosso CTE vamos primeiro exibir o número de linha padrão e em seguida vamos usar um sindicato tudo para aumentar e exibir a linha número 1 por um até que a linha No atinja o valor aumentado para 10. Para ver o resultado, vamos usar uma consulta selecionada para exibir o nosso resultado CTE.,/div>

7
8
9
10
11
12
13
Informando @RowNo int =1;
;com ROWCTE como
(
SELECT @RowNo como ROWNO
UNION ALL
SELECIONE ROWNO+1
a PARTIR de ROWCTE
ONDE RowNo < 10
)
SELECT * FROM ROWCTE

Saída: Quando executar a consulta, podemos ver a seguir de saída.,

Ece Query to display Date Range:

Let’s consider as there is a scenario to display the date from start date to end date all one by one as each row with details. A fim de exibir os dados recursivos, estaremos usando a consulta CTE.

aqui vamos escrever uma consulta CTE para mostrar o intervalo de datas com o número de semana e dia. Para isso, definimos a data de início e fim no parâmetro. Aqui neste exemplo usamos o getdate() para definir a data de Início como data de hoje, e para a data de fim adicionamos 16 dias a partir de hoje.,

CTE without Union All

Aqui podemos ver que temos criar uma consulta CTE simples para mostrar o RowNo, data de início e número de semana. Quando executarmos isso ,teremos apenas um resultado com RowNo como “1”, Data de Início como data atual e número de semana, juntamente com o week day.saída

: quando executamos a consulta, podemos ver a saída abaixo.,

CTE com a União de Todos

para exibir o resultado a partir da data de início data de fim, um por um, como recursiva, podemos usar uma União de Todos para incrementar RowNo, para adicionar o dia, um por um, até que a condição de satisfeito o intervalo de data, a fim de parar a recursividade precisamos definir algumas condições. Neste exemplo, repetimos a recursão para exibir nossos registros até que a data seja menor ou igual à data final.saída

: quando executamos a consulta, podemos ver a saída abaixo.,

múltiplos CTE

em alguns cenários, precisamos criar mais de uma consulta CTE e juntá-los para mostrar o nosso resultado. Neste caso, podemos usar os múltiplos Eti. Nós podemos criar uma consulta CTE múltipla e combiná-los em uma única consulta usando a vírgula. Múltiplos CTE precisam ser separados por”, ” vírgula pousado pelo nome CTE.

estaremos usando acima do mesmo exemplo de intervalo de datas para usar mais de uma consulta CTE, aqui podemos ver como criamos duas consultas CTE como CTE1 e CTE 2 para mostrar o resultado do intervalo de datas tanto para CTE1 quanto para CTE2.,

exemplo:

saída: quando executamos a consulta, podemos ver a saída abaixo.

usando a consulta CTE para a tabela SQL

Agora vamos ver, como usar a consulta CTE para os nossos dados da tabela SQL server.,

Criar Banco de dados: em Primeiro lugar, vamos criar um banco de dados para criar a nossa tabela

1
2
3
4
5
6
7
8
9
10
11
12
13
14

USE MASTER
IR
— 1) Verificar a base de Dados já Existe .,Se a base de dados existir, então largue e crie um novo DB
se existir (selecione a partir de sys.bases de dados ONDE a = ‘CTEDB’ )
DROP DATABASE CTEDB
IR
CRIAR BANCO de dados CTEDB
IR
USAR CTEDB
IR

Criar Tabela: Agora vamos criar um exemplo de Item de Tabela no Banco de dados criado.

inserir dados de amostra: vamos inserir alguns registros de amostra para usar em nossa consulta CTE.,

CTE exemplo:

Agora vamos criar um resultado temporário simples usando a consulta CTE. Aqui, nesta consulta CTE, demos o nome da expressão como “itemCTE” e adicionamos a lista de colunas que usamos na consulta CTE. Na consulta CTE mostramos todos os detalhes do item com o ano.saída

: quando executamos a consulta, podemos ver a saída abaixo.

CTE using Union ALL

Let’s consider there is a below two scenarios to display the result.

  1. o primeiro cenário é mostrar cada Item preço do ano em curso., o segundo cenário é o aumento de 10% do preço de cada Item para o próximo ano.

para isso, usamos a consulta CTE acima. Nesta consulta, nós adicionamos a União tudo e na União toda consulta que fazemos cálculo para adicionar 10% a cada item preço e mostrar na próxima linha com a adição de um ano.saída

: quando executamos a consulta, podemos ver a saída abaixo.

Common Table Expressions (CTE) for Insert

Now we will see how to insert the CTE result to another table. Para isso vamos considerar a nossa tabela de itens acima., Nós inserimos os detalhes do Item resultado da consulta CTE acima para a tabela de histórico do Item. Para isso primeiro criamos uma tabela de histórico de itens.

criar uma tabela de histórico de itens: nesta tabela de histórico, adicionamos as mesmas colunas que a tabela de itens, juntamente com a coluna de MarketRate como preço de itens presente ou futuro. Aqui está a consulta para criar uma tabela ItemHistory.

CTE inserir exemplo:

aqui usamos acima da mesma consulta CTE inserir o resultado na tabela de histórico de itens. A partir desta consulta, inserimos ambos os detalhes do Item do presente ano, juntamente com os preços do Item do próximo ano adicionados como 10% a mais.,

saída: quando executamos a consulta, podemos ver a saída abaixo como 30 registros foram inseridos em nossa tabela de histórico de itens.

selecione consulta:

para ver o resultado do histórico de itens selecionamos e mostramos todos os detalhes.,

1
2
3

select * from ItemHistory

Saída: Quando executar a consulta, podemos ver a seguir a saída do item tabela de histórico.

Create View with CTE Example:

Now we see how to use the above CTE query can be used in a view., Aqui criamos uma vista e adicionamos o resultado CTE dentro da vista. Quando selecionamos a vista como resultado, podemos ver a saída de CTE será exibida.

pesquisa de exemplo:

saída: quando executamos a consulta, podemos ver a saída abaixo como resultado da vista.

Como escrever uma limpeza Consulta CTE:

Aqui estão algumas diretrizes básicas que precisam ser seguidas para escrever uma boa Consulta CTE.

  1. um CTE deve ser seguido por uma única instrução de seleção, inserção, atualização ou DELETE que referencie algumas ou todas as colunas CTE.,
  2. múltiplas definições de consulta CTE podem ser definidas em um CTE não recursivo.
  3. UMA CTE pode fazer referência a si mesma e a CTEs definidas anteriormente na mesma COM a cláusula
  4. podemos usar apenas uma Cláusula em uma CTE
  5. ORDEM, PARA, a COMPUTAÇÃO de COMPUTAÇÃO ou POR OPÇÃO, a XML não pode ser usado em não-CTE recursiva de consulta de definição
  6. SELECT DISTINCT, GROUP BY, HAVING, Escalar agregação, CIMA, ESQUERDA, DIREITA, OUTER JOIN (junção INTERNA é permitido) subconsultas não pode ser usado em uma CTE recursiva definição da consulta.,

conclusão

eti pode ser usado para criar uma consulta recursiva e pode ser usado para se referenciar várias vezes. CTEs pode ser usado em vez de visualizações e, finalmente, um CTE é fácil e simples para a legibilidade e manutenção de código.

  • Autor
  • Posts Recentes
Syed Shanu é um MVP da Microsoft, duas vezes CsharpCorner MVP e dois de Código de tempo de projeto MVP, Escritor, Blogueiro, Palestrante e sempre dispostos a compartilhar o que sabe para os outros.,ele é basicamente de Madurai, Tamil Nadu, Índia. Ele está trabalhando como Líder Técnico na Coreia do Sul com mais de 10 anos de experiência em Tecnologias da Microsoft.Shanu é ativo na comunidade e sempre feliz em compartilhar tópicos relacionados com ASP.NET, MVC, ASP.NET Core, Web API, SQL Server, UWP, Azul, C#, AngularJs, Angular2. Ele escreveu mais de 70 artigos com várias tecnologias ASP.NET, SQL Server, C#, AngularJs, Angular2, ASP.NET Core, Unity 3D, Windows Universal App e Samsung Gear App development., Ele é várias vezes vencedor do TechNet Guru Gold e você pode encontrar toda a sua contribuição em MSDN e também em TechNet Wiki
Ele também é um autor do eBook “SQL Queries For Beginners” você pode baixar o eBook a partir daqui:http://www.c-sharpcorner.com/ebooks/sql-queries-for-beginners.,
Ver todos os posts por Silvia Shanu

posts mais Recentes por Silvia Shanu (ver todas)
  • SQL Server Expressões de Tabela Comuns (CTE) – 23 de fevereiro, 2017
  • Criação de um “smart” disparador com base em uma trilha de auditoria para SQL Server – 12 de dezembro de 2016