Fazendo operações e criando colunas virtuais no FROM do PostgreSQL

O PostgreSQL permite criar colunas após a definição do FROM.

SELECT *FROM tabela,coluna1 AS batata

Você pode chamar uma função para alterar a coluna (mas não pode fazer :

SELECT *FROM tabela,"-"(coluna1, coluna2) AS subtracao-- não pode fazer isso:-- coluna1 - coluna2 AS subtracao

O estranho é que é possível fazer isso:

SELECT *FROM tabela,"-"(coluna1 - coluna2, coluna3 - coluna4) AS batata

Você pode chamar uma coluna depois dela ser criada:

SELECT *FROM tabela,coluna1 AS batata,batata AS tuberculo,"-"(batata, tuberculo) AS subtracao

É posível chamar funções dentro do FROM do PostgreSQL, mas é preciso fazer um "hack".

CREATE OR REPLACE FUNCTION public." "(	IN anyelement,	OUT anyelement)    RETURNS anyelement    LANGUAGE 'sql'    IMMUTABLE AS $BODY$SELECT $1$BODY$;

Testando:

WITH ab AS (	SELECT 'a' AS "a", 'b' AS b)SELECT a, b, cFROM 	ab, 	" "(ARRAY[1,2,3]) AS c;

Referências

Documentação sobre Pseudo Types
https://www.postgresql.org/docs/current/datatype-pseudo.html
https://www.postgresql.org/docs/current/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC

You should also read:

PostgreSQL

# Instalando o wget para fazer download da chave do repositório # Instalando o wget, capaz de fazer downloads de documentos via HTTP…