PostgreSQL - Retornar mais de uma coluna em um select dentro de um CASE

3 respostas
jaymemattos

Boa tarde pessoal,

Na minha consulta SQL estou tentando fazer um if (case when) e dentro dele faço um select, mais este select retorna mais de uma coluna, como posso resolver essa situação??
Aqui vai o código:

SELECT 
	
	CASE
		WHEN p.localrealizacao IN(1) 
			THEN (select u.rua, u.estado, c.cidade, b.bairro from entrevistacoletiva e,bairro b, cidade c, unidade u where e.unidaderealizacao = u.id and 
					u.cidade_id = c.id and u.bairro_id = b.id )
		WHEN  p.localrealizacao IN(2) 
			THEN 'Outros locais' 
	END as localrealizacao ,




pr.nome as programa,
pj.nome as projeto,
prof.nome as profissional,
s.servico as servico,
p.nomeplano as nomeplano,
ue.unidade as un_execucao,
up.unidade as un_proponente, 
prof.nome as profissional,
(to_char(p.data, 'DD/MM/YYYY')) AS data, 
p.hora,
p.finalidade,
p.estrategias,
p.objetivo
             

FROM entrevistacoletiva AS p
LEFT JOIN programa AS pr
ON p.programa_id = pr.id
LEFT JOIN projeto AS pj
ON p.projeto  = pj.id
LEFT JOIN profissional as prof
ON p.profissionalreferencia_id = prof.id
LEFT JOIN servico as s
ON p.servico_id = s.id
LEFT JOIN unidade as up
ON p.unidadeproponente_id = up.id
LEFT JOIN unidade as ue
ON p.unidadeexecucao_id = ue.id

WHERE p.id = 1

Alguém da uma luz?
Dá de fazer um If encadeado la dentro seila algo parecido?

Abraços

3 Respostas

fabiocsilva

Esse case não tem muito sentido. Retorne todas as colunas do primeiro case e simplesmente trate o caso em que localrealizacao = 2 na aplicação.

jaymemattos

Não entendi muito a sua colocação. Mais só destacando, os dados que eu busco neste SQL irão aparecer em um relatorio.

fabiocsilva

Bom, esse primeiro case nem deve funcionar porque você precisa atribuir um único valor a coluna localrealizacao. Então, ou você concatema rua, estado, cidade, etc, devolvendo já formatado para o seu relatório, ou então você cria uma consulta que retorna todas essas colunas, sendo que quando p.localrealizacao = 2 elas estarão nulas. Para essa opção você faria a formatação no seu relatório.

Criado 28 de outubro de 2011
Ultima resposta 28 de out. de 2011
Respostas 3
Participantes 2