Expression de table commune (CTE)

S’applique à :case marquée oui Databricks SQL case marquée oui Databricks Runtime

Définit un jeu de résultats temporaire que vous pouvez référencer plusieurs fois dans l’étendue d’une instruction SQL. Une CTE est utilisée principalement dans une instruction SELECT.

Syntaxe

WITH common_table_expression [, ...]

common_table_expression
  view_identifier [ ( column_identifier [, ...] ) ] [ AS ] ( query )

Paramètres

  • view_identifier

    Identificateur par lequel le common_table_expression peut être référencé

  • column_identifier

    Identificateur facultatif par lequel une colonne du common_table_expression peut être référencée.

    Si les column_identifier sont spécifiés, leur nombre doit correspondre au nombre de colonnes renvoyé par query. Si aucun nom n’est spécifié, les noms de colonnes sont dérivés de query.

  • query

    Requête produisant un jeu de résultats.

Exemples

-- CTE with multiple column aliases
> WITH t(x, y) AS (SELECT 1, 2)
  SELECT * FROM t WHERE x = 1 AND y = 2;
   1   2

-- CTE in CTE definition
> WITH t AS (
    WITH t2 AS (SELECT 1)
    SELECT * FROM t2)
  SELECT * FROM t;
   1

-- CTE in subquery
> SELECT max(c) FROM (
    WITH t(c) AS (SELECT 1)
    SELECT * FROM t);
      1

-- CTE in subquery expression
> SELECT (WITH t AS (SELECT 1)
          SELECT * FROM t);
                1

-- CTE in CREATE VIEW statement
> CREATE VIEW v AS
    WITH t(a, b, c, d) AS (SELECT 1, 2, 3, 4)
    SELECT * FROM t;
> SELECT * FROM v;
   1   2   3   4

-- CTE names are scoped
> WITH t  AS (SELECT 1),
       t2 AS (
        WITH t AS (SELECT 2)
        SELECT * FROM t)
SELECT * FROM t2;
   2