none
CONSULTA QUE SOMA ICMS COMPLEMENTAR EM NOTA ORIGINAL RRS feed

  • Pergunta

  • Bom dia....preciso fazer uma consulta ao banco MS SQL 2008 para buscar o ICMS de cada nota fiscal, porem existem casos que a nota fiscal foi emitida sem o ICMS ou com ICMS menor do que deveria. Por esse motivo uma segunda nota fiscal de complemento de ICMS foi emitida para a referida nota.

    Preciso que em minha consulta, liste apenas a primeira nota, mas no ICMS seja apresentado (ICMS da nota original + ICMS da nota complementar).

    Como fazer essa consulta?

    veja um exemplo do que preciso

    SELECT

    FILIAL, 
    CLIENTE , 
    DOCUMENTO,
    SERIE, 
    TIPO,
    ICMS, (aqui deve sair ICMS da NF original somado o ICMS da nota complementar)

    FROM "tabela"


    WHERE

    "condiçoes ''

    ORDER BY FILIAL, DOC , SERIE 

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

    veja um exemplo do registro no BD

    01 000078 028132   001 N 0
    01 000078 028132   001 N 0
    01 000078 028132   001 N 0
    01 000078 028177   001 I 46,74
    01 000078 028177   001 I 55,59
    01 000078 028177   001 I 16,2


    quarta-feira, 9 de outubro de 2013 13:32

Respostas

Todas as Respostas

  • Acredito que seja só somar os valores do ICMS se os outros campos forem os mesmo

    Ex:

    SELECT
    
    FILIAL, 
    CLIENTE , 
    DOCUMENTO,
    SERIE, 
    TIPO,
    SUM(ICMS) -soma os valores do icms
     FROM "tabela"
    
    
    -- WHERE "condiçoes ''
    GROUP BY FILIAL, 
    CLIENTE , 
    DOCUMENTO,
    SERIE, 
    TIPO -- AGRUPA
    ORDER BY FILIAL, DOC , SERIE 
    


    [ ]´s,
    Lukas Baldan

    quarta-feira, 9 de outubro de 2013 13:43
  • Lukas

    obrigado, mas acho que você não entendeu....os dois valores são em registros diferentes (em linhas diferentes do banco).

    exemplo:

    campo ICMS do registro 01 (primeira nota)= 15 e campo ICMS do registro 35 (nota complementar de ICMS referente a primeira nota). total 50,00 que deve ser apresentado no registro 01 substituindo o valor 15.

     

    quarta-feira, 9 de outubro de 2013 14:09
  • Mas qual campo os registros tem em comum para você saber que é a mesma nota?

    de um exemplo dos registros de uma nota


    [ ]´s,
    Lukas Baldan

    quarta-feira, 9 de outubro de 2013 14:25
  • campo documento + serie do primeiro registro = nforigem + serie origem do segundo registro
    quarta-feira, 9 de outubro de 2013 14:44
  • Nesse caso acho que você poderia fazer um join com a mesma tabela

    esse campo nforigem  fica vazio quando é a primeira nota fiscal?

    algo desse tipo

    SELECT
    
    A.FILIAL, 
    A.CLIENTE , 
    A.DOCUMENTO,
    A.SERIE, 
    A.TIPO,
    A.ICMS + SUM(B.ICMS) AS ICMS
    FROM tabela A
    LEFT JOIN TABELA B
    ON a.documento = b.nforigem
    and a.serie = b.serie
    where A.nforigem is null
    
    GROUP BY A.FILIAL, 
    A.CLIENTE , 
    A.DOCUMENTO,
    A.SERIE, 
    A.TIPO,
    A.ICMS


     


    [ ]´s,
    Lukas Baldan




    quarta-feira, 9 de outubro de 2013 14:52
  • Deleted
    quarta-feira, 9 de outubro de 2013 15:00
  • ok....

    respondendo ao amigo josé:  N= nota norma e I=Nota de complemento de icms

    agora ao lukas: Entendi o raciocinio! No meu caso os dois registros estão na mesma tabela que no seu exemplo seria na "tabela A"

    funcionaria da mesma forma?

    obrigado pela paciência e dedicação! 

    quarta-feira, 9 de outubro de 2013 15:11
  • esqueci de dizer que Sim, exatamente essa é a saída "exemplo" de minha tabela ( cada linha corresponde a um item das mencionadas notas. As três primeiras da nota original e as ultimas três da nota complementar


    01 000078 028132 001 N 0
    01 000078 028132 001 N 0
    01 000078 028132 001 N 0
    01 000078 028177 001 I 46,74
    01 000078 028177 001 I 55,59
    01 000078 028177 001 I 16,2
    quarta-feira, 9 de outubro de 2013 15:15
  • Deleted
    quarta-feira, 9 de outubro de 2013 15:25
  • Sim funcionaria o A é um alias para a tabela

    é só substituir pelo nome da sua tabela

    FROM "suatabela" A
    LEFT JOIN "suatabela" B


    [ ]´s,
    Lukas Baldan

    quarta-feira, 9 de outubro de 2013 15:28
  • Obrigado pessoal....vou testar assim que chegar ao escritório e posto o resultado

    valeu mesmo!

    quarta-feira, 9 de outubro de 2013 15:37
  • Pessoal fiz uns testes aqui tentando o conseito do alias e usar duas vezes amesma tabela, mas ainda estou com alguns problemas. Vejam o cod abaixo:

    SELECT

    SD2A.D2_FILIAL,
    SD2A.D2_CLIENTE,
    SD2A.D2_LOJA, 
    SD2A.D2_DOC,
    SD2A.D2_NFORI, 
    SD2A.D2_SERIE, 
    SD2A.D2_TIPO,
    SD2A.D2_VALICM 

    FROM SD2010 SD2A

    LEFT JOIN SD2010 SD2B ON SD2B.D_E_L_E_T_ = '' AND SD2B.D2_FILIAL = SD2A.D2_FILIAL AND SD2B.D2_NFORI = SD2A.D2_DOC AND SD2B.D2_SERIORI = SD2A.D2_SERIE AND SD2B.D2_ITEMORI = SD2A.D2_ITEMORI


    WHERE SD2A.D_E_L_E_T_ = ''

    AND SD2A.D2_FILIAL IN ('01') 
    AND SD2A.D2_DOC IN ('028132','028177')


    ORDER BY SD2A.D2_FILIAL, SD2A.D2_DOC , SD2A.D2_SERIE , SD2A.D2_ITEM

    --------------------------retorna o resultado abaixo---------------------------------------- 

    01 000078 02 028132              001 N 0
    01 000078 02 028132              001 N 0
    01 000078 02 028132              001 N 0
    01 000078 02 028177    028132    001 I 46,74
    01 000078 02 028177    028132    001 I 55,59
    01 000078 02 028177    028132    001 I 16,2

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

    Se eu altero a linha SD2A.D2_VALICM  para SD2B.D2_VALICM a coluna ICMS sai como NULL ou se faço somando SD2A.D2_VALICM + SD2B.D2_VALICM acontece a mesma coisa.

    01 000078 02 028132           001 N NULL
    01 000078 02 028132           001 N NULL
    01 000078 02 028132           001 N NULL
    01 000078 02 028177   028132   001 I NULL
    01 000078 02 028177   028132   001 I NULL
    01 000078 02 028177   028132   001 I NULL

    quando tento usar o "SUM" (SD2A.D2_VALICM + SUM (SD2B.D2_VALICM)AS ICMS) da o seguinte erro:

    Msg 8120, Level 16, State 1, Line 5
    Column 'SD2010.D2_FILIAL' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

     
    quinta-feira, 10 de outubro de 2013 16:49
  • desculpem, não sei porque, mas quando colo o resultado da consulta, na minha tela esta organizado e depois que eu confirmo fica essa bagunça......
    quinta-feira, 10 de outubro de 2013 16:50
  • Deleted
    quinta-feira, 10 de outubro de 2013 23:54
  • Deleted
    sexta-feira, 11 de outubro de 2013 01:59