Ако функцията върне един запис, тогава:
WITH cte AS (SELECT 1 a, 2 b)
SELECT my_function(a, b) FROM cte;
ще работи. Ако обаче функцията е SRF (Set-Returning-Function), тогава трябва да използвате LATERAL, за да уведомите базата данни, че искате да подадете резултатите от предишните таблици в оператора JOIN към функциите по-късно в ПРИСЪЕДИНЯВАНЕ. Това се постига по следния начин:
WITH cte AS (SELECT 1 a, 2 b)
SELECT * FROM cte, LATERAL my_function(a, b);
LATERAL ще накара PostgreSQL да вземе всеки ред от CTE и да изпълни "my_function" със стойностите от този ред, връщайки резултатите от тази функция към общия оператор SELECT.