У меня есть этот простой запрос T-SQL, он генерирует несколько столбцов из таблицы, а также объединяет информацию из других связанных таблиц.
Моя модель данных проста. У меня запланированное мероприятие с участниками. Мне нужно знать, сколько участников участвуют в каждом мероприятии.
Мое решение состоит в том, чтобы добавить CTE, который группирует запланированные события и подсчитывает количество участников.
Это позволит мне присоединиться к этой информации для каждого запланированного события. Сохранение запроса простым
Однако мне нравится, чтобы мои запросы были простыми. Если в будущем мне понадобятся дополнительные временные результаты, доступные во время простого запроса, что мне делать?
Мне бы очень понравилось, если бы у меня было несколько CTE, но я не могу, верно? Какие у меня есть варианты?
Я исключил представления и действия на уровне данных приложения. Я предпочитаю изолировать свои SQL-запросы.
источник
[ ,...n ]
in[ WITH <common_table_expression> [ ,...n ] ]
. Пример C, «Использование нескольких определений CTE в одном запросе»), это явно выражено. К сожалению, этот пример не представлен в документации по SQL 2008 и старше (т. е. пример не был представлен, когда ОП опубликовал вопрос).UNION ALL
Вы, безусловно, можете иметь несколько CTE в одном выражении запроса. Вам просто нужно отделить их запятой. Вот пример. В приведенном ниже примере есть два CTE. Один назван,
CategoryAndNumberOfProducts
а второй названProductsOverTenDollars
.источник