The WITH Common Table Expression (CTE) is used for creating temporary named result sets. The functionality was introduced in SQL Server 2005. This T-SQL Expression begins with the keyword WITH. The results from the WITH expression are stored in a temporary named result set that can be queried. Using the WITH expression, allows for the simplification of query logic, by allowing the separation of logic into separate steps. The WITH expression has a few basic parts:
following the 'WITH' keyword is the name of the temporary result set being created and the names of the columns in the result set. Parentheses are placed around the column names.
WITH [name of temporary resultset] (columns in result set)
AS ( SQL Query Definition )
following the 'AS' keyword will be the SQL Query (surrounded by parentheses). The number of columns selected in the query must match the number of columns listed in the Table Expression Definition (the columns listed after name of resultset).
This example will use the following table:
SELECT Name, Position, Salary
Here is the resultset from the above SELECT query:
|John Plum||Software Developer||65000|
|Frank Apple||Software Developer||62000|
|Patty Pineapple||Software Developer||60000|
|Judy Peach||Software Developer||50000|
|Jane Orange||Project Manager||75000|
Using the WITH expression we can create a temporary named result set. In this example we will limit the result set to only the Software Developers from the above Employees table.
WITH Developers (Name,Salary)
SELECT Name, Salary FROM Employees WHERE Position = 'Software Developer'
SELECT * FROM Developers
Here is the resultset from the above SELECT query from the 'Developers' result set: