Select dentro de Select

Pessoal to tentando fazer um select dentro de outro select… eu preciso obter no segundo select um valor de aplicInicial para poder verificar o AND aplicInicial <= 1000, só que isto não funciona .
Quando faco o inner join com a tabela “MCTTB015_MOV_COTA_FUNDOS” eu estou duplicado os valores nos fundos… por isso coloquei esse outro select
Alguem pode dar um mao??

SELECT DISTINCT "PK_MCTTB010", "INSTITUICAO_MCTTB010", "MCTTB009_INSTITUICAO"."NOME_FANTASIA_MCTTB009", 
"NOME_FUNDO_MCTTB010", "CATEGORIA_ANBID_MCTTB010", "NOME_MCTTB018", "DATA_INICIO_FUNDO_MCTTB010", 
"DATA_FIM_FUNDO_MCTTB010", "CNPJ_MCTTB010", "ABERTO_MCTTB010", 
"EXCLUSIVO_MCTTB010", "GESTOR_MCTTB010", "MCTTB009_GESTOR"."NOME_FANTASIA_MCTTB009" AS "NOME_GESTOR",
(SELECT "MCTTB015_MOV_COTA_FUNDOS"."VAL_MIN_INICIAL_MCTTB015" FROM "MCTTB015_MOV_COTA_FUNDOS" WHERE "FUNDOS_MCTTB015" = "PK_MCTTB010" ORDER BY "DATA_MCTTB015" DESC LIMIT 1) as aplicInicial
FROM "MCTTB010_FUNDOS" 
INNER JOIN "MCTTB009_INSTITUICAO" ON 
"INSTITUICAO_MCTTB010" = "MCTTB009_INSTITUICAO"."PK_MCTTB009" 
INNER JOIN "MCTTB018_CATEGORIA_ANBID" ON 
"CATEGORIA_ANBID_MCTTB010" = "PK_MCTTB018" 
INNER JOIN "MCTTB014_STATUS" ON 
"FUNDOS_MCTTB014" = "PK_MCTTB010" 
INNER JOIN "MCTTB009_INSTITUICAO" AS "MCTTB009_GESTOR" ON 
"GESTOR_MCTTB010" = "MCTTB009_GESTOR"."PK_MCTTB009" 
WHERE "DATA_FIM_FUNDO_MCTTB010" is null

AND aplicInicial <= 1000

ORDER BY "NOME_FUNDO_MCTTB010" 

Acho que me falei besteira o segundo select dentro do outro funciona, meu problema está em verificar o AND aplicInicial <= 1000 ou seja para comparar com aquela coluna do segundo select. Ele diz que a coluna nao exite.

Neste seu caso creio que não irá funcionar pq o select interno retornará mais de um valor. Usá-lo como campo e não como critério é um pouco mais complicado.
o resultado do select interno deverá sempre bater com o principal.
Entendi que querias usar um dado do select principal no interno, para isso use o campo que quiser com alias no campo e na tabela, ai é só chamar no select interno.

como se usa alias ? pode me dar um exemplo ?

Se tu tá usando Oracle ou MS SQL, podes fazer com a cláusula WITH.
Se for MySQL eu não sei se isso existe.

Abraço!

acho que entendi… mais eu já nao estou chamando o alias aplicInicial ?

é postgress

Eu sou um herói, consegui deixar o PostgreSQL de fora uiheauihea
Mas pra ele existe:
http://www.postgresql.org/docs/9.0/static/queries-with.html

acontece :slight_smile: vou dar um olhada nesse comando .