Иерархические и рекурсивные запросы в SQL Server
Jasmin Ludolf
Content Developer

Задаёт временный именованный результирующий набор, известный как общее табличное выражение (CTE). Он формируется на основе простого запроса и определяется в рамках области выполнения одного оператора
WITH CTEtable as ( -- a query -- )SELECT * FROM CTEtable
SELECT, INSERT, UPDATE или DELETEWITHUNION или JOINВыборка менеджеров с помощью CTE:
WITH JOBS (id, SurName, JobTitle) AS( SELECT ID, Name, Position FROM employee WHERE Position like '%Manager%' ),
WITH AS для определения CTESELECT из таблицы EmployeeВыборка сотрудников с зарплатой свыше 10 000
SALARIES (ID,Salary) AS (
SELECT
ID,
Salary
FROM ITSalary
WHERE Salary > 10000)
Полный запрос:
WITH JOBS (id, SurName, JobTitle) AS ( SELECT ID, Name, Position FROM employee WHERE Position like '%Manager%'),SALARIES (ID,Salary) AS ( SELECT ID, Salary FROM ITSalary WHERE Salary > 10000)SELECT JOBS.Name, JOBS.Position, SALARIES.Salary FROM JOBS INNER JOIN SALARIES on JOBS.ID = SALARIES.ID;
SurNmames | JobTitle | Salary
Paul Smith | IT Manager | 15,000
Adam Peterson | Sourcing Manager | 12,500
Anna Nilson | Portfolio Manager | 10,500
Иерархические и рекурсивные запросы в SQL Server