Fórum Consulta de produtos #623772
01/07/2025
0
WITH PRECO_ORDENADO AS ( SELECT I.CODTABPRECO, I.CODPROD, I.VALOR, I.CUSTO, I.MARGEM, ROW_NUMBER() OVER ( PARTITION BY I.CODTABPRECO, I.CODPROD ORDER BY COALESCE(I.DATAHORAALT, I.DATAHORACAD) DESC ) AS ORDEM FROM ITEMTABPRECO I ) SELECT CODTABPRECO, CODPROD, VALOR, CUSTO, MARGEM FROM PRECO_ORDENADO WHERE ORDEM = 1;
Como faço para listar tambem a descrição do produto que está na tabela PRODUTO (chave primaria é o codprod), e a descrição do grupo que está na tabela GRUPO (chave primaria é o codgrupo, que está ligada com a tabela de produto)?

Mylena
Curtir tópico
+ 0Posts
01/07/2025
Claudio Andrade
WITH PRECO_ORDENADO AS ( SELECT I.CODTABPRECO, I.CODPROD, I.VALOR, I.CUSTO, I.MARGEM, ROW_NUMBER() OVER ( PARTITION BY I.CODTABPRECO, I.CODPROD ORDER BY COALESCE(I.DATAHORAALT, I.DATAHORACAD) DESC ) AS ORDEM FROM ITEMTABPRECO I ) SELECT CODTABPRECO, CODPROD, VALOR, CUSTO, MARGEM FROM PRECO_ORDENADO WHERE ORDEM = 1;
Como faço para listar tambem a descrição do produto que está na tabela PRODUTO (chave primaria é o codprod), e a descrição do grupo que está na tabela GRUPO (chave primaria é o codgrupo, que está ligada com a tabela de produto)?
Ajuste o nome dos campos dentro do LEFT conforme sua necessidade.
WITH PRECO_ORDENADO AS ( SELECT I.CODTABPRECO, I.CODPROD, I.VALOR, I.CUSTO, I.MARGEM, ROW_NUMBER() OVER ( PARTITION BY I.CODTABPRECO, I.CODPROD ORDER BY COALESCE(I.DATAHORAALT, I.DATAHORACAD) DESC ) AS ORDEM FROM ITEMTABPRECO I ) SELECT CODTABPRECO, CODPROD, VALOR, CUSTO, MARGEM, prod.nome, prod.descricao FROM PRECO_ORDENADO left join ( select p.codprod, p.nome, g.descricao from produto p inner join grupo g on g.codgrupo = p.codgrupo ) prod on prod.CODPROD = CODPROD WHERE ORDEM = 1;
Gostei + 0
02/07/2025
Arthur Heinrich
WITH PRECO_ORDENADO AS ( SELECT I.CODTABPRECO, I.CODPROD, P.NOMEPRODUTO PRODUTO, G.NOMEGRUPO GRUPO, I.VALOR, I.CUSTO, I.MARGEM, ROW_NUMBER() OVER ( PARTITION BY I.CODTABPRECO, I.CODPROD ORDER BY COALESCE(I.DATAHORAALT, I.DATAHORACAD) DESC) AS ORDEM FROM ITEMTABPRECO I LEFT JOIN PRODUTO P ON P.CODPROD = I.CODPROD LEFT JOIN GRUPO G ON G.CODGRUPO = P.CODGRUPO ) SELECT CODTABPRECO, CODPROD, VALOR, CUSTO, MARGEM FROM PRECO_ORDENADO WHERE ORDEM = 1 ORDER BY 1, 2;
Gostei + 0
03/07/2025
Mylena
left join ( select p.codprod, p.PRDDESCRICAO, g.descricao from produto p inner join GRUPPROD g on g.CODGRUP=p.CODGRUP ) prod on prod.CODPROD = CODPROD WHERE ORDEM = 1;
Erro: Nome da coluna 'CODPROD' ambíguo.
Gostei + 0
04/07/2025
Claudio Andrade
left join ( select p.codprod, p.PRDDESCRICAO, g.descricao from produto p inner join GRUPPROD g on g.CODGRUP=p.CODGRUP ) prod on prod.CODPROD = CODPROD WHERE ORDEM = 1;
Erro: Nome da coluna 'CODPROD' ambíguo.
Pegue o select interno e filtre somente ele com alguns registros de CODPROD da consulta principal, veja se o resultado retorna mais de um com o mesmo código.
Talvez você precise fazer algum ajuste fino para obter o resultado desejado, visto que não conheço seu ambiente.
De qualquer forma poste aqui o resultado para que possamos ir ajudando se necessário.
Boa sorte.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)