On Mon, Aug 13, 2012 at 7:41 PM, Edson - Listas <[email protected]> wrote:
> Olá Pessoal,
>
> O meu select abaixo, esta duplicando as linhas, mesmo usando DISTINCT.
>
> select DISTINCT a.cd_fil,a.cd_ordem,a.dt_abertura,
> a.cd_cli,f.nm_cli,f.de_endereco,f.fone,
> a.vlr_final_os,a.vlr_desc_os,a.vlr_outros,
> a.vlr_tot_prod,a.vlr_tot_serv,a.servico_solicitado,
> a.de_ocorrencia,
> h.de_cid,a.cd_funcio,e.nm_funcio,b.cd_prod,
> g.de_prod,b.qtde_prod,b.vlr_unit_prod,b.perc_desc_prod,
> b.vlr_desc_prod,b.vlr_prod,b.total_prod,
> c.cd_servico,d.de_servico,c.qtd_serc,c.vlr_unit,
> c.perc_desc_serv,c.vlr_desc,c.vlr_serv,
> c.sub_total,
> CASE
> WHEN a.fg_tipo_os = 'INS' THEN 'INSTALAÇÃO'
> WHEN a.fg_tipo_os = 'MAN' THEN 'MANUTENÇÃO'
> WHEN a.fg_tipo_os = 'MAN' THEN 'MANUTENÇÃO'
> WHEN a.fg_tipo_os = 'ACO' THEN 'À COBRAR'
> WHEN a.fg_tipo_os = 'GAR' THEN 'GARANTIA'
> WHEN a.fg_tipo_os = 'CON' THEN 'CONTRATO'
> WHEN a.fg_tipo_os = 'ORC' THEN 'ORÇAMENTO'
> ELSE 'OUTROS'
> END tipo_os,
> CASE
> WHEN a.fg_status_os = 'AB' THEN 'ABERTA'
> WHEN a.fg_status_os = 'FC' THEN 'FECHADA'
> ELSE 'INVÁLIDA'
> END status_os
>
> from osservhe a inner JOIN osprodut b
> on a.cd_ordem = b.cd_ordem
> inner join cliente f
> on a.cd_cli = f.cd_cli
> inner join vendfunc e
> on a.cd_funcio = e.cd_funcio
> inner join osservde c
> on a.cd_ordem = c.cd_ordem
> left join produto g
> on b.cd_prod = g.cd_prod
> left join servicos d
> on c.cd_servico = d.cd_servico
> inner join cidade h on
> f.cd_cid = h.cd_cid
> order by a.dt_abertura,a.cd_ordem
>
>
Tem certeza? Não são campos parecidos, mas não idênticos (p.e. com espaços
extras)?
Veja que o DISTINCT como você está usando tenta verificar *todas as colunas*,
se quiser só alguns campos tem que ser o DISTINCT ON, talvez você queria os
que estão no ORDER BY:
select DISTINCT ON (a.dt_abertura,a.cd_ordem)
a.cd_fil,a.cd_ordem,a.dt_abertura,
...
Atenciosamente,
--
Matheus de Oliveira
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral