with (non-recursive, top level)


BigQueryDb2 (LUW)DerbyH2MariaDBMySQLOracle DBPostgreSQLSQL ServerSQLite200720092011201320152017201920212023⚠ 3.36.0 - 3.50.0b⚠ 3.8.3 - 3.35.0ab⊘ 3.5.7 - 3.7.11⚠ 2008R2 - 2022a✓ 8.4 - 18⊘ 8.3⚠ 21c - 23.9c⚠ 12cR1 - 19cb⚠ 11gR2d⚠ 11gR1abcd✓ 8.0.11 - 9.4.0⊘ 5.0 - 5.7✓ 10.3 - 12.0.2c⚠ 10.2c⊘ 5.1 - 10.1⚠ 1.4.197 - 2.4.240ae✓ 1.4.196⊘ 1.4.191 - 1.4.195⊘ 10.15.1.3 - 10.17.1.0⚠ 9.7 - 12.1.2ac⚠ 2.0d
  1. With implies recursive
  2. With query names are visible in accessed views
  3. With names even mask qualified table names (schema.table)
  4. Without column list: WITH name AS (SELECT…)
  5. Query names in with don’t hide schema objects

The with clause defines “statement-scoped views”:

WITH query_name (column_name, …) AS (
   SELECT …
     FROM …
) [, …]
SELECT …
  FROM query_name

Normative References

The with clause is defined in ISO/IEC 9075-2:2023 §7.17 as optional feature T121, “WITH (excluding RECURSIVE) in query expression”.

You can’t catch up on 20 years of SQL evolution in one day. Subscribe the newsletter via E-Mail, Bluesky or RSS to gradually catch up and to keep modern-⁠sql.com on your radar.

About the Author

Photo of Markus Winand

Markus Winand provides insights into SQL and shows how different systems support it at modern-sql.com. Previously he made use-the-index-luke.com, which is still actively maintained. Markus can be hired as trainer, speaker and consultant via winand.at.

Buy the Book

Cover of “SQL Performance Explained”: Squirrel running on grass

The essence of SQL tuning in 200 pages

Buy now!
(paperback and/or PDF)

Paperback also available at Amazon.com.

Hire Markus

Markus offers SQL training and consulting for developers working at companies of all sizes.
Learn more »

Connect with Markus Winand

Subscribe mailinglistsSubscribe the RSS feedMarkus Winand on LinkedInMarkus Winand on XINGMarkus Winand on TwitterMarkus Winand on Bluesky
Copyright 2015-2025 Markus Winand. All righs reserved.
Legal | Contact | NO WARRANTY | Trademarks | Privacy and GDPR