On Tue, Aug 18, 2015 at 3:29 PM, Aguiar Magalhaes <maga...@yahoo.com.br> wrote:
> update tabela_tot set (nome_cli, tot_ana_1_2014) = > (select distinct (nome_cli), count(data_analise) as tot_analise from > tabela_mov > where date_part('MONTH', data_analise) < 7 > and date_part('YEAR', data_analise) = 2014 > and ccs <> 0 > group by nome_cli); > Pelo que entendi você quer atualizar para cada "nome_cli" o total. Vejo de cara duas formas: 1. Usando sub-consulta correlacionada: UPDATE tabela_tot AS tt SET tot_ana_1_2014 = ( SELECT count(*) AS tot_analise FROM tabela_mov AS tm WHERE tm.data_analise >= '2014-01-01' AND tm.data_analise < '2014-07-01' AND tm.ccs <> 0 *AND tm.nome_cli = tt.nome_cli* ); 2. Usando a cláusula FROM: UPDATE tabela_tot AS tt SET tot_ana_1_2014 = tm2.tot_analise FROM ( SELECT tm.nome_cli, count(*) AS tot_analise FROM tabela_mov AS tm WHERE tm.data_analise >= '2014-01-01' AND tm.data_analise < '2014-07-01' AND tm.ccs <> 0 GROUP BY tm.nome_cli ) AS tm2 *WHERE tm2.nome_cli = tt.nome_cli* OBS1: Veja que mudei para não usar o date_part, é melhor caso tenha índice em data_analise (o índice ideal seria (nome_cli, data_analise), não me parece ser necessário incluir ccs). OBS2: Não testei, verifique se roda por favor. Atenciosamente, -- Matheus de Oliveira
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral