Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Halison

Valores dos campos repetidos em uma consulta

Recommended Posts

Boa tarde!

Estou utilizando o seguinte select:

SELECT

F.NF_SAIDA,

F.CODIGO_FISCAL_OPERACAO,

F.CODIGO_ITEM,

F.DESCRICAO_ITEM,

F.QTDE_ITEM,

F.UNIDADE,

F.VALOR_ITEM,

F.PRECO_UNITARIO,

(CASE

WHEN (FI.VALOR_IMPOSTO > 0) AND (FI.BASE_IMPOSTO > 0) AND (FI.ID_IMPOSTO = 1) THEN

ROUND(((FI.VALOR_IMPOSTO / FI.BASE_IMPOSTO) * 100),2)

ELSE

0.0

END) AS ITEM_ALIICMS,

COALESCE((CASE

WHEN FI.ID_IMPOSTO = 1 THEN

FI.VALOR_IMPOSTO

END),0) AS ITEM_VALORICMS,

COALESCE((CASE

WHEN FI.ID_IMPOSTO = 1 THEN

FI.BASE_IMPOSTO

END),0) AS ITEM_BASEICMS,

(CASE

WHEN (FI.VALOR_IMPOSTO > 0) AND (FI.BASE_IMPOSTO > 0) AND (FI.ID_IMPOSTO = 2) THEN

ROUND(((FI.VALOR_IMPOSTO / FI.BASE_IMPOSTO) * 100),2)

ELSE

0.0

END) AS ITEM_ALIIPI,

COALESCE((CASE

WHEN FI.ID_IMPOSTO = 2 THEN

FI.VALOR_IMPOSTO

END),0) AS VALORIPI,

COALESCE((CASE

WHEN FI.ID_IMPOSTO = 2 THEN

FI.BASE_IMPOSTO

END),0) AS ITEM_BASEIPI,

(CONVERT(VARCHAR(3), CONVERT(INTEGER,F.TRIBUT_ORIGEM)) +

CONVERT(VARCHAR(3), F.TRIBUT_ICMS)) AS FSITUACAOTRIBUTARIA,

'0,00' AS CLASSEENQUADRAMENTO,

'0,00' AS CODIGOSELOIPI,

'0,00' AS QUANTIDADESELOS,

'0,00' AS CODIGOENQUADRAMENTO,

'1' AS FILIALCOD,

(CASE

WHEN (FI.VALOR_IMPOSTO > 0) AND (FI.BASE_IMPOSTO > 0) AND (FI.ID_IMPOSTO = 12) THEN

ROUND(((FI.VALOR_IMPOSTO / FI.BASE_IMPOSTO) * 100),2)

ELSE

0.0

END) AS ITEM_ALICMSST,

COALESCE((CASE

WHEN FI.ID_IMPOSTO = 12 THEN

FI.VALOR_IMPOSTO

END),0) AS ITEM_VALORICMSST,

COALESCE((CASE

WHEN FI.ID_IMPOSTO = 12 THEN

FI.BASE_IMPOSTO

END),0) AS ITEM_BASEICMSST,

REPLACE(F.CLASSIF_FISCAL,'.','') as CLASSIF_FISCAL, /* <<== PRONTO ^^ */

F.DESCONTO_ITEM

FROM FATURAMENTO_ITEM F,

FATURAMENTO_IMPOSTO FI

WHERE F.NF_SAIDA =F.NF_SAIDA

AND FI.NF_SAIDA = F.NF_SAIDA

AND F.NF_SAIDA = '071175'

GROUP BY F.NF_SAIDA,

F.CODIGO_FISCAL_OPERACAO,

F.CODIGO_ITEM,

F.DESCRICAO_ITEM,

F.QTDE_ITEM,

F.UNIDADE,

F.VALOR_ITEM,

F.PRECO_UNITARIO,

FI.VALOR_IMPOSTO,

FI.BASE_IMPOSTO,

FI.ID_IMPOSTO,

F.TRIBUT_ORIGEM,

F.TRIBUT_ICMS,

F.CLASSIF_FISCAL,

F.DESCONTO_ITEM

 

O problema é que ele está retornando ou repetindo pos varias vezes os valores dos campos, se alguem puder me ajudar agradeco desde já.

Ex: o select está retornado mais de 40 os mesmos valores.

NF_SAIDA CODIGO_FISCAL_OPERACAO CODIGO_ITEM

-------- ---------------------- -----------

071175 6101 40604

071175 6101 40604

071175 6101 40604

071175 6101 40604

071175 6101 40604

071175 6101 40604

 

Para complementar ainda mais o meu problema estou utilizando o DISTINCT e mesmo assim ele está repetindo varias vezes os mesmos valores no campos

 

SELECT DISTINCT

F.NF_SAIDA,

F.CODIGO_FISCAL_OPERACAO,

F.CODIGO_ITEM,

F.DESCRICAO_ITEM,

F.QTDE_ITEM,

F.UNIDADE,

F.VALOR_ITEM,

F.PRECO_UNITARIO,

(CASE

WHEN (FI.VALOR_IMPOSTO > 0) AND (FI.BASE_IMPOSTO > 0) AND (FI.ID_IMPOSTO = 1) THEN

ROUND(((FI.VALOR_IMPOSTO / FI.BASE_IMPOSTO) * 100),2)

ELSE

0.0

END) AS ITEM_ALIICMS,

COALESCE((CASE

WHEN FI.ID_IMPOSTO = 1 THEN

FI.VALOR_IMPOSTO

END),0) AS ITEM_VALORICMS,

COALESCE((CASE

WHEN FI.ID_IMPOSTO = 1 THEN

FI.BASE_IMPOSTO

END),0) AS ITEM_BASEICMS,

(CASE

WHEN (FI.VALOR_IMPOSTO > 0) AND (FI.BASE_IMPOSTO > 0) AND (FI.ID_IMPOSTO = 2) THEN

ROUND(((FI.VALOR_IMPOSTO / FI.BASE_IMPOSTO) * 100),2)

ELSE

0.0

END) AS ITEM_ALIIPI,

COALESCE((CASE

WHEN FI.ID_IMPOSTO = 2 THEN

FI.VALOR_IMPOSTO

END),0) AS VALORIPI,

COALESCE((CASE

WHEN FI.ID_IMPOSTO = 2 THEN

FI.BASE_IMPOSTO

END),0) AS ITEM_BASEIPI,

(CONVERT(VARCHAR(3), CONVERT(INTEGER,F.TRIBUT_ORIGEM)) +

CONVERT(VARCHAR(3), F.TRIBUT_ICMS)) AS FSITUACAOTRIBUTARIA,

'0,00' AS CLASSEENQUADRAMENTO,

'0,00' AS CODIGOSELOIPI,

'0,00' AS QUANTIDADESELOS,

'0,00' AS CODIGOENQUADRAMENTO,

'1' AS FILIALCOD,

(CASE

WHEN (FI.VALOR_IMPOSTO > 0) AND (FI.BASE_IMPOSTO > 0) AND (FI.ID_IMPOSTO = 12) THEN

ROUND(((FI.VALOR_IMPOSTO / FI.BASE_IMPOSTO) * 100),2)

ELSE

0.0

END) AS ITEM_ALICMSST,

COALESCE((CASE

WHEN FI.ID_IMPOSTO = 12 THEN

FI.VALOR_IMPOSTO

END),0) AS ITEM_VALORICMSST,

COALESCE((CASE

WHEN FI.ID_IMPOSTO = 12 THEN

FI.BASE_IMPOSTO

END),0) AS ITEM_BASEICMSST,

REPLACE(F.CLASSIF_FISCAL,'.','') as CLASSIF_FISCAL, /* <<== PRONTO ^^ */

F.DESCONTO_ITEM

FROM FATURAMENTO_ITEM F,

FATURAMENTO_IMPOSTO FI

WHERE F.NF_SAIDA =F.NF_SAIDA

AND FI.NF_SAIDA = F.NF_SAIDA

AND F.NF_SAIDA = '071175'

GROUP BY F.NF_SAIDA,

F.CODIGO_FISCAL_OPERACAO,

F.CODIGO_ITEM,

F.DESCRICAO_ITEM,

F.QTDE_ITEM,

F.UNIDADE,

F.VALOR_ITEM,

F.PRECO_UNITARIO,

FI.VALOR_IMPOSTO,

FI.BASE_IMPOSTO,

FI.ID_IMPOSTO,

F.TRIBUT_ORIGEM,

F.TRIBUT_ICMS,

F.CLASSIF_FISCAL,

F.DESCONTO_ITEM

Ex:

NF_SAIDA CODIGO_FISCAL_OPERACAO CODIGO_ITEM

-------- ---------------------- -----------

071175 6101 40604

071175 6101 40604

071175 6101 40604

071175 6101 40604

071175 6101 40604

071175 6101 40604

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por mais que utilize o distinct, você usa um group by

 

F.NF_SAIDA,F.CODIGO_FISCAL_OPERACAO,F.CODIGO_ITEM,F.DESCRICAO_ITEM,F.QTDE_ITEM,F.UNIDADE,F.VALOR_ITEM,F.PRECO_UNITARIO,FI.VALOR_IMPOSTO, FI.BASE_IMPOSTO, FI.ID_IMPOSTO, F.TRIBUT_ORIGEM,F.TRIBUT_ICMS,F.CLASSIF_FISCAL,F.DESCONTO_ITEM

 

 

e seu distinct tem estes campos

F.NF_SAIDA,    F.CODIGO_FISCAL_OPERACAO,    F.CODIGO_ITEM,    F.DESCRICAO_ITEM,    F.QTDE_ITEM,    F.UNIDADE,    F.VALOR_ITEM,    F.PRECO_UNITARIO,    AS ITEM_ALIICMS,    AS ITEM_BASEICMS,    AS VALORIPI,    AS ITEM_BASEIPI,    AS FSITUACAOTRIBUTARIA,    AS ITEM_ALICMSST,     AS ITEM_VALORICMSST,    AS ITEM_BASEICMSST,    CLASSIF_FISCAL, /* <<==  PRONTO ^^ */    F.DESCONTO_ITEM

 

Faça assim, traga somente os campos que esta usando em seu group by e veja quais sao os diferentes.....

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por mais que utilize o distinct, você usa um group by

 

F.NF_SAIDA,F.CODIGO_FISCAL_OPERACAO,F.CODIGO_ITEM,F.DESCRICAO_ITEM,F.QTDE_ITEM,F.UNIDADE,F.VALOR_ITEM,F.PRECO_UNITARIO,FI.VALOR_IMPOSTO, FI.BASE_IMPOSTO, FI.ID_IMPOSTO, F.TRIBUT_ORIGEM,F.TRIBUT_ICMS,F.CLASSIF_FISCAL,F.DESCONTO_ITEM

 

 

e seu distinct tem estes campos

F.NF_SAIDA,    F.CODIGO_FISCAL_OPERACAO,    F.CODIGO_ITEM,    F.DESCRICAO_ITEM,    F.QTDE_ITEM,    F.UNIDADE,    F.VALOR_ITEM,    F.PRECO_UNITARIO,    AS ITEM_ALIICMS,    AS ITEM_BASEICMS,    AS VALORIPI,    AS ITEM_BASEIPI,    AS FSITUACAOTRIBUTARIA,    AS ITEM_ALICMSST,     AS ITEM_VALORICMSST,    AS ITEM_BASEICMSST,    CLASSIF_FISCAL, /* <<==  PRONTO ^^ */    F.DESCONTO_ITEM

 

Faça assim, traga somente os campos que esta usando em seu group by e veja quais sao os diferentes.....

 

Abçs

 

A.Jr.

 

Obrigado pela ajuda, desculpe-me a minha ignorância, mas não entendi, pois se eu colocar os campos: AS ITEM_BASEICMS, AS VALORIPI, AS ITEM_BASEIPI, AS FSITUACAOTRIBUTARIA, AS ITEM_ALICMSST, AS ITEM_VALORICMSST, AS ITEM_BASEICMSST, no group by vai dar erro, se não for demais gostaris de um exemplo

 

Grato pela atenção!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode estar ocorrendo também um produto cartesiano indevido , talvez porque falte alguma chave na ligação entre as tabelas.

 

FROM FATURAMENTO_ITEM F,

FATURAMENTO_IMPOSTO FI

WHERE F.NF_SAIDA =F.NF_SAIDA

AND FI.NF_SAIDA = F.NF_SAIDA

AND F.NF_SAIDA = '071175'

 

Em vermelho - veja que está ligando a mesma tabela ??

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.