Delen via


Algemene tabelexpressie (CTE)

Van toepassing op: vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime

Definieert een tijdelijke resultatenset waarnaar u mogelijk meerdere keren kunt verwijzen binnen het bereik van een SQL-instructie. Een CTE wordt voornamelijk gebruikt in een SELECT instructie.

Syntaxis

WITH common_table_expression [, ...]

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

Parameters

  • view_identifier

    Een id waarnaar common_table_expression kan worden verwezen

  • column_identifier

    Een optionele id waarmee naar een kolom van de common_table_expression kolom kan worden verwezen.

    Als column_identifiers zijn opgegeven, moet het aantal kolommen overeenkomen met het aantal kolommen dat wordt geretourneerd door de query. Als er geen namen zijn opgegeven, worden de kolomnamen afgeleid van de query.

  • query

    Een query die een resultatenset produceert.

Voorbeelden

-- 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