Usuário com melhor resposta
Consulta busca o mesmo registro mais de uma vez.

Pergunta
-
Bom dia. Gostaria de saber porque essa query tá buscando um mesmo registro quatro vezes. Já usei DISTINCT e também não deu certo.
O Campo TP_SIT tá como tributado='T', então aparece D, F e T que são as opões para o cadastro.
SELECT DISTINCT p.idproduto,p.descrcomproduto, g.DESCRRESPRODUTO,VARCHAR_FORMAT(g.DTULTIMAALTERACAO, 'dd/MM/yyyy') AS DATA,
t.tiposittribent AS TP_SIT, g.ncm,g.codcest
FROM PRODUTO P, PRODUTO_GRADE G, PRODUTO_TRIBUTACAO_ESTADO T
WHERE p.idproduto=g.idproduto
AND p.descrcomproduto like 'ACETONA%'
--AND g.DTULTIMAALTERACAO > '15.10.2015'
AND t.uf='MS'
AND g.flaginativo='F'
GROUP BY
p.idproduto,
p.descrcomproduto,
g.DESCRRESPRODUTO,
g.DTULTIMAALTERACAO,
t.tiposittribent,
g.ncm,g.codcest
Respostas
-
José,
Está faltando realizar uma junção com a tabela PRODUTO_TRIBUTACAO_ESTADO.
Como você não está realizando nenhuma junção nesta tabela provavelmente está sendo gerado um plano cartesiano e aparecendo todos os valores (T, F, I e D).
Favor consultar o material abaixo sobre junção (JOIN):
Felipe Lauffer
MCT | MCSE: Data Management & Analytics | MCSE: Data Platform | MCSA: SQL Server 2012/2014 | MCP
[ Blog ] - [ Profile ] - [ Wiki ] - [ Gallery ] - [ LinkedIn ]- Marcado como Resposta Robson William Silva quinta-feira, 6 de outubro de 2016 18:00
Todas as Respostas
-
José,
Não entendi exatamente sua necessidade.
Você precisa que apareçam apenas os registros que possuem o campo t.tiposittribent = 'T'?
Tens como nos enviar exemplos de consulta para entender o que está retornando duplicado?
Felipe Lauffer
MCT | MCSE: Data Management & Analytics | MCSE: Data Platform | MCSA: SQL Server 2012/2014 | MCP
[ Blog ] - [ Profile ] - [ Wiki ] - [ Gallery ] - [ LinkedIn ] -
Então, teria que retornar somente o quarto registro Tipo de Situação = 'T' que como está cadastrado.
19076 ACETONA FARMAX POPY 80 ML ACETONA FARMAX POPY 80 ML 25/08/2016 D
19076 ACETONA FARMAX POPY 80 ML ACETONA FARMAX POPY 80 ML 25/08/2016 F
19076 ACETONA FARMAX POPY 80 ML ACETONA FARMAX POPY 80 ML 25/08/2016 I
19076 ACETONA FARMAX POPY 80 ML ACETONA FARMAX POPY 80 ML 25/08/2016 T -
Se você possui estes 4 registros e gostaria de retornar apenas os registros que o campo t.tiposittribent = 'T' você precisa realizar um filtro adicional na cláusula WHERE.
Como existem os registros com os 4 diferentes valores possíveis no agrupamento ele não irá realizar este filtro para você.
Teste a sua consulta com o código abaixo, por gentileza.
SELECT DISTINCT p.idproduto,p.descrcomproduto, g.DESCRRESPRODUTO,VARCHAR_FORMAT(g.DTULTIMAALTERACAO, 'dd/MM/yyyy') AS DATA, t.tiposittribent AS TP_SIT, g.ncm,g.codcest FROM PRODUTO P, PRODUTO_GRADE G, PRODUTO_TRIBUTACAO_ESTADO T WHERE p.idproduto=g.idproduto AND p.descrcomproduto like 'ACETONA%' --AND g.DTULTIMAALTERACAO > '15.10.2015' AND t.uf='MS' AND g.flaginativo='F' AND t.tiposittribent = 'T' GROUP BY p.idproduto, p.descrcomproduto, g.DESCRRESPRODUTO, g.DTULTIMAALTERACAO, t.tiposittribent, g.ncm,g.codcest
Felipe Lauffer
MCT | MCSE: Data Management & Analytics | MCSE: Data Platform | MCSA: SQL Server 2012/2014 | MCP
[ Blog ] - [ Profile ] - [ Wiki ] - [ Gallery ] - [ LinkedIn ] -
-
Me confirma se existem registros na tabela PRODUTO_TRIBUTACAO_ESTADO com o campo tiposittribent diferente de 'T', por gentileza.
Felipe Lauffer
MCT | MCSE: Data Management & Analytics | MCSE: Data Platform | MCSA: SQL Server 2012/2014 | MCP
[ Blog ] - [ Profile ] - [ Wiki ] - [ Gallery ] - [ LinkedIn ] -
-
-
José,
Está faltando realizar uma junção com a tabela PRODUTO_TRIBUTACAO_ESTADO.
Como você não está realizando nenhuma junção nesta tabela provavelmente está sendo gerado um plano cartesiano e aparecendo todos os valores (T, F, I e D).
Favor consultar o material abaixo sobre junção (JOIN):
Felipe Lauffer
MCT | MCSE: Data Management & Analytics | MCSE: Data Platform | MCSA: SQL Server 2012/2014 | MCP
[ Blog ] - [ Profile ] - [ Wiki ] - [ Gallery ] - [ LinkedIn ]- Marcado como Resposta Robson William Silva quinta-feira, 6 de outubro de 2016 18:00
-