SELECT instituicao.cod, (SELECT sum(recurso.total) FROM pesquisador LEFT JOIN projeto ON projeto.coordenador = pesquisador.cod LEFT JOIN recurso ON recurso.cod_proj = projeto.cod WHERE pesquisador.cod = 15 and recurso.tipo = 'p' ) as permanente, (SELECT sum(recurso.total) FROM pesquisador LEFT JOIN projeto ON projeto.coordenador = pesquisador.cod LEFT JOIN recurso ON recurso.cod_proj = projeto.cod WHERE pesquisador.cod = 15 and recurso.tipo = 'c' ) as consumo, (SELECT sum(recurso.total) FROM pesquisador LEFT JOIN projeto ON projeto.coordenador = pesquisador.cod LEFT JOIN recurso ON recurso.cod_proj = projeto.cod WHERE pesquisador.cod = 15 and recurso.tipo = 's' ) as servico GROUP BY instituicao.cod ORDER BY instituicao.cod;
Isso lhe dá alguma idéia? _____ De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Em nome de Flávio Alves Granato Enviada em: quinta-feira, 10 de maio de 2007 09:16 Para: Comunidade PostgreSQL Brasileira Assunto: [pgbr-geral] dúvida com sql alguém poderia me ajudar com uma luz no caminho para eu desenvolver um sql? É o seguinte. tenho uma tabela com | cod | tipo | cod_instituicao | cod_proj | total | p c s e eu gostaria que retornasse | cod_instituicao | soma do total de p | soma do total de c | soma do total de s | se alguem puder me dar uma luz para o caminho que tenho que seguir para achar a solução. Tentei fazer desta forma mas esta gerando um plano cartesiano se eu tirar o distinct. Agradeço muito desde já. select distinct on (instituicao.nome) instituicao.cod, instituicao.nome, permanente, consumo, servico from (select sum(recurso.total) as permanente from pesquisador, projeto, recurso where pesquisador.cod = 15 and pesquisador.cod = projeto.coordenador and projeto.cod = recurso.cod_proj and recurso.tipo = 'p' group by recurso.cod_instituicao,recurso.tipo ) per, ( select sum( recurso.total) as consumo, instituicao.cod, recurso.cod_proj from pesquisador, projeto, recurso, instituicao where pesquisador.cod = 15 and pesquisador.cod = projeto.coordenador and projeto.cod = recurso.cod_proj and recurso.cod_instituicao = instituicao.cod and recurso.tipo = 'c' group by instituicao.cod, recurso.cod_proj,recurso.total ) con, ( select sum(recurso.total) as servico, instituicao.cod, recurso.cod_proj from pesquisador, projeto, recurso, instituicao where pesquisador.cod = 15 and pesquisador.cod = projeto.coordenador and projeto.cod = recurso.cod_proj and recurso.cod_instituicao = instituicao.cod and recurso.tipo = 's' group by instituicao.cod, recurso.cod_proj,recurso.total ) ser, instituicao, projeto, pesquisador, recurso where pesquisador.cod = 15 and pesquisador.cod = projeto.coordenador and recurso.cod_proj = projeto.cod and recurso.cod_instituicao = instituicao.cod group by instituicao.cod, per.permanente, con.consumo, ser.servico, instituicao.nome, recurso.total -- Lista CGNU-VA: http://listas.cipsga.org.br/cgi-bin/mailman/listinfo/cgnu-va <http://listas.cipsga.org.br/cgi-bin/mailman/listinfo/cgnu-va> Consultoria em Software Livre: (31) 9145 7109 Desenvolvimento de sistemas web, desktop, montagem de servidores e redes. http://microbiocity.blogspot.com <http://microbiocity.blogspot.com> melhor blog que existe. "Computers are like air conditioners: they do not work well when you open windows..." DigitalDrill Nunca tenha medo de tentar algo novo. Lembre-se de que um amador solitário construiu a Arca e um grande grupo de profissionais construiu o Titanic. "O próximo grande salto evolutivo da humanidade será a descoberta de que cooperar é melhor que competir" Prof. Pietro Ubaldi Se usuário tivesse extensão, com certeza seria .fdp
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral