Hierarchical and Recursive Queries in SQL Server
Jasmin Ludolf
Content Developer
Specifies a temporary named result set, known as a common table expression (CTE). This is derived from a simple query and defined within the execution scope of a single statement
WITH CTEtable as ( -- a query -- )
SELECT * FROM CTEtable
SELECT
, INSERT
, UPDATE
, or DELETE
statementsWITH
statementUNION
or JOIN
Select managers using a CTE:
WITH JOBS (id, SurName, JobTitle) AS
( SELECT ID, Name, Position FROM employee WHERE Position like '%Manager%' ),
WITH
AS to define the CTESELECT
on the Employee
tableSelect employees with salary over 10,000
SALARIES (ID,Salary) AS (
SELECT
ID,
Salary
FROM ITSalary
WHERE Salary > 10000)
The whole query:
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
Hierarchical and Recursive Queries in SQL Server