Om funktionen returnerar en enskild post då:
WITH cte AS (SELECT 1 a, 2 b)
SELECT my_function(a, b) FROM cte;
kommer att funka. Men om funktionen är en SRF (Set-Returning-Function) måste du använda LATERAL, för att låta databasen veta att du vill mata resultaten av de tidigare tabellerna i JOIN-satsen till funktionerna senare i ANSLUTA SIG. Detta görs så här:
WITH cte AS (SELECT 1 a, 2 b)
SELECT * FROM cte, LATERAL my_function(a, b);
LATERAL kommer att få PostgreSQL att ta varje rad från CTE och köra "my_function" med värdena från den raden, vilket returnerar resultatet av den funktionen till den övergripande SELECT-satsen.