CTE – Common table expression

WITH common_table_expression

En CTE (Common Table Expression) specificerar ett tillfälligt namngivet delresultat och kan ses som en temporär tabell eller en lokal vy för just den här frågan. Flera CTE-uttryck kan anges genom att separera varje tabell med komma. En CTE kan inkludera referenser till sig själv. Med CTE lägger man in en tabelldefinition mellan parenteserna som i nedanstående exempel och sedan ställer man frågan.

WITH TempTabell AS (
    [...]
)

Ett riktigt exempel

Jag har lagt in en SELECT-sats i en CTE, som sammanfogar för- och efternamn samt namnger det med ett alias, ”Namn”.  Detta alias kan användas i SELECT-satsen efter CTE och då även i WHERE-satsen som annars inte kan använda sig av alias. I den vanliga SELECT-satsen, finns alias ”Namn” igen och den behöver vara med för att namnge kolumnen. Med den här metoden slipper vi upprepningar i WHERE-satsen.

WITH FirstAndLast AS (
    SELECT
        FirstName, LastName,
        FirstName + ' ' + LastName AS Namn
    FROM
        Persons
)

SELECT
    FirstName + ' ' + LastName AS Namn
FROM
    FirstAndLast
WHERE
    Namn LIKE '%u%';

Kommentera

E-postadressen publiceras inte. Obligatoriska fält är märkta *