Consulta de produtos
Bom dia, estou com o seguinte comando:
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)?
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
Curtidas 0
Respostas
Claudio Andrade
01/07/2025
Bom dia, estou com o seguinte comando:
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)?
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
Arthur Heinrich
01/07/2025
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
Mylena
01/07/2025
Está apresentando erro nessa parte:
Erro: Nome da coluna 'CODPROD' ambíguo.
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
Claudio Andrade
01/07/2025
Está apresentando erro nessa parte:
Erro: Nome da coluna 'CODPROD' ambíguo.
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