Не рекурсивная форма ОТВ может быть использована как альтернатива наследуемым таблицам и представлениям. Обычно ОТВ определяются с использованием оператора with и дополнительного запроса, который ссылается на имя, используемое в with (см. пример 6.74).
Примеры 6.73 и 6.74 используют базу данных AdventureWorks для демонстрации того, как ОТВ могут быть использованы в не рекурсивных запросах. Пример 6.73 использует «подходящие» средства, в то время как пример 6.74 решает ту же самую проблему через не рекурсивный запрос.
Запрос в примере 6.73 отыскивает общие суммы, чьи значения больше, чем среднее значение всех сумм, и чьи величины превышают 40% средних значений всех сумм.
Основное свойство этого запроса в том, что он убирает пустые значения, потому что внутренний запрос записан дважды. Одним из способов сокращения синтаксиса запроса является создание представления, содержащего внутренний запрос, но это слишком запутано, поскольку вам нужно создавать представление, а потом удалять его, когда вы выполните запрос. Лучшим способом является создание ОТВ. В примере 6.74 показано использование не рекурсивного OTB, которое сокращает определение запроса в примере 6.73.
Здесь cte_name - имя OTB, которое задает результирующую таблицу. Список столбцов, которые принадлежат табличному выражению, записан в скобках. (OTB в примере 6.74 называется pricecaic и имеет один столбец, year_2002.) innerquery в синтаксисе ОТВ определяет оператор select, который задает результирующий набор соответствующего табличного выражения. После этого вы можете использовать определенное табличное выражение во внешнем запросе. Внешний запрос в примере 6.74 использует ОТВ, называемое pricecaic, и его столбец уеаr_2002 для упрощения внутреннего запроса, который появляется дважды.