Concept Flow - Multiple CTEs in one query
Define CTE1
Define CTE2
→Use CTE1 and CTE2 in main query
End
First, you define multiple CTEs one after another. Then, you use them together in the main query to get the final result.
WITH cte1 AS (SELECT 1 AS num), cte2 AS (SELECT 2 AS num) SELECT cte1.num + cte2.num AS sum FROM cte1, cte2;
| Step | Action | CTE1 Content | CTE2 Content | Main Query Result |
|---|---|---|---|---|
| 1 | Define cte1 | [{num:1}] | N/A | N/A |
| 2 | Define cte2 | [{num:1}] | [{num:2}] | N/A |
| 3 | Execute main query joining cte1 and cte2 | [{num:1}] | [{num:2}] | [{sum:3}] |
| 4 | Return final result | [{num:1}] | [{num:2}] | [{sum:3}] |
| Variable | Start | After Step 1 | After Step 2 | Final |
|---|---|---|---|---|
| cte1 | undefined | [{num:1}] | [{num:1}] | [{num:1}] |
| cte2 | undefined | undefined | [{num:2}] | [{num:2}] |
| main_query_result | undefined | undefined | undefined | [{sum:3}] |
Multiple CTEs let you define several temporary named result sets separated by commas. Use WITH cte1 AS (...), cte2 AS (...) before the main query. Then refer to these CTEs like tables in your main SELECT. This helps organize complex queries step-by-step. All CTEs must be defined before the main query runs.