Tengo esta simple consulta T-SQL, emite un montón de columnas de una tabla y también une información de otras tablas relacionadas .
Mi modelo de datos es simple. Tengo un evento programado, con participantes. Necesito saber cuántos participantes participan en cada evento.
Mi solución a esto es agregar un CTE que agrupe los eventos programados y cuente el número de participantes.
Esto me permitirá unirme a esa información por evento programado. Manteniendo la consulta simple.
Sin embargo, me gustaría mantener mis consultas simples. Si alguna vez necesito tener resultados temporales adicionales accesibles durante mi consulta simple, ¿qué debo hacer?
Realmente me gustaría, si pudiera tener múltiples CTE pero no puedo, ¿verdad? ¿Cuáles son mis opciones aquí?
He descartado las vistas y hacer cosas en la capa de datos de la aplicación. Prefiero aislar mis consultas SQL.
fuente
[ ,...n ]
in[ WITH <common_table_expression> [ ,...n ] ]
. Ejemplo C, "Usar múltiples definiciones CTE en una sola consulta", lo llama explícitamente. Lamentablemente, este ejemplo no se proporciona en la documentación de SQL 2008 y anterior (es decir, el ejemplo no se proporcionó cuando el OP publicó la pregunta).UNION ALL
Ciertamente puede tener múltiples CTE en una sola expresión de consulta. Solo necesita separarlos con una coma. Aquí hay un ejemplo. En el siguiente ejemplo, hay dos CTE. Uno se nombra
CategoryAndNumberOfProducts
y el segundo se nombraProductsOverTenDollars
.fuente