Eu tenho essa consulta T-SQL simples, que emite várias colunas de uma tabela e também junta informações de outras tabelas relacionadas .
Meu modelo de dados é simples. Eu tenho um evento agendado, com participantes. Preciso saber quantos participantes participam de cada evento.
Minha solução para isso é adicionar um CTE que agrupe eventos agendados e conte o número de participantes.
Isso permitirá que eu junte essas informações por evento agendado. Mantendo a consulta simples.
No entanto, gosto de manter minhas consultas simples. Se, no futuro, precisar de resultados temporários adicionais acessíveis durante minha consulta simples, o que devo fazer?
Eu realmente gostaria, se eu pudesse ter vários CTEs, mas não posso, certo? Quais são minhas opções aqui?
Eu excluí visualizações e fazia as coisas na camada de dados do aplicativo. Eu prefiro isolar minhas consultas SQL.
fonte
[ ,...n ]
no[ WITH <common_table_expression> [ ,...n ] ]
. Exemplo C, "Usando várias definições CTE em uma única consulta", chama isso de forma explícita. Infelizmente, este exemplo não é fornecido na documentação do SQL 2008 e mais velho (ou seja, o exemplo não foi fornecido quando o OP postou a pergunta).UNION ALL
Você certamente pode ter vários CTEs em uma única expressão de consulta. Você só precisa separá-los com uma vírgula. Aqui está um exemplo. No exemplo abaixo, existem dois CTEs. Um é nomeado
CategoryAndNumberOfProducts
e o segundo é nomeadoProductsOverTenDollars
.fonte