Ir para conteúdo

POWERED BY:

marcos.dmasceno

Members
  • Total de itens

    4
  • Registro em

  • Última visita

Tudo que marcos.dmasceno postou

  1. marcos.dmasceno

    Somar valores da linha anterior com a próxima.

    Gostaria de saber se existe uma forma de somar os valor de uma linha com a sua anterior. Ex: No select abaixo, o resultado que estou obtendo não está fazendo o acumulado SELECT DATMOV, VLRMOV, DEBCRE, (CASE WHEN E600MCC.DEBCRE = 'C' THEN (VLRMOV) ELSE (VLRMOV * -1) END) AS RESULT FROM E600MCC GROUP BY DATMOV, VLRMOV, DEBCRE, E600MCC.SEQMOV, E600MCC.DEBCRE ORDER BY DATMOV ASC DatMov VlrMov DebCre Acumulado 20 13-11-01 00:00:00.000 15 C 15 2013-11-01 00:00:00.000 10 C 10 2013-11-01 00:00:00.000 -5 D -5 2013-11-01 00:00:00.000 12 C 12 2013-11-04 00:00:00.000 -20 D -20 2013-11-04 00:00:00.000 50 C 50 Eu queria que a coluna acumulado fosse sempre a soma do valor atual com a anterior. Isso é possível? Muito obrigado.
  2. marcos.dmasceno

    Somar valores da linha anterior com a próxima.

    Motta, fiz de outra forma. Ele fez o acumulado por dia, e não por linha. SELECT DATMOV, VLRMOV, DEBCRE, SEQMOV ,(CASE WHEN E600MCC.DEBCRE = 'C' THEN (VLRMOV) ELSE (VLRMOV * -1) END) AS Valor_Movimento ,CONVERT(varchar(20),AVG(VLRMOV) OVER (PARTITION BY DATMOV ORDER BY DATEPART(DD,DATMOV) ),1) AS Media_Movimento ,CONVERT(varchar(20),SUM(VLRMOV) OVER (PARTITION BY DATMOV ORDER BY DATEPART(DD,DATMOV) ),1) AS Acumulado FROM E600MCC WHERE DEBCRE IS NOT NULL ORDER BY DATMOV asc, SEQMOV; DatMov VlrMov DebCre Seq Valor_Movim. Media Acumulado 2013-11-01 00:00:00.000 15300.00 C 1 15300.00 4795.972500 19183.89 2013-11-01 00:00:00.000 918.00 C 1 918.00 4795.972500 19183.89 2013-11-01 00:00:00.000 1428.99 C 1 1428.99 4795.972500 19183.89 2013-11-01 00:00:00.000 1536.90 C 2 1536.90 4795.972500 19183.89 2013-11-04 00:00:00.000 114712.50 C 1 114712.50 70146.896666 420881.38 2013-11-04 00:00:00.000 1190.00 C 1 1190.00 70146.896666 420881.38 2013-11-04 00:00:00.000 7938.20 C 2 7938.20 70146.896666 420881.38 2013-11-04 00:00:00.000 175051.18 C 2 175051.18 70146.896666 420881.38 2013-11-04 00:00:00.000 120099.50 C 3 120099.50 70146.896666 420881.38 2013-11-04 00:00:00.000 1890.00 C 3 1890.00 70146.896666 420881.38
  3. marcos.dmasceno

    Somar valores da linha anterior com a próxima.

    Motta, a select está desse jeito usando o over. SELECT DATMOV, VLRMOV, DEBCRE ,SUM(VLRMOV) OVER(PARTITION BY DEBCRE) AS Total FROM E600MCC ORDER BY DATMOV ASC E o resultado está vindo assim. Ele está somando todos os VlrMov que os DebCre são 'C'. DatMov VlrMov DebCre 2013-11-01 00:00:00.000 1428.99 C 3099384862.53 2013-11-01 00:00:00.000 1536.90 C 3099384862.53 2013-11-01 00:00:00.000 15300.00 C 3099384862.53 2013-11-01 00:00:00.000 918.00 C 3099384862.53 2013-11-04 00:00:00.000 1890.00 C 3099384862.53 2013-11-04 00:00:00.000 114712.50 C 3099384862.53 2013-11-04 00:00:00.000 1190.00 C 3099384862.53 2013-11-04 00:00:00.000 7938.20 C 3099384862.53 .... No meu select original, eu acho que não expliquei o meu problema. Eu fiz uma coluna "Result" para negativar o valor quando o "DebCre" for igual a "D". Neste caso, o que eu preciso é de uma nova coluna que acumule os valores linha a linha. SELECT DATMOV, VLRMOV, DEBCRE, (CASE WHEN E600MCC.DEBCRE = 'C' THEN (VLRMOV) ELSE (VLRMOV * -1) END) AS RESULT FROM E600MCC ORDER BY DATMOV ASC Acumulado DatMov VlrMov DebCre Result (Coluna Hipotética - Não existe) 2013-11-01 00:00:00.000 15300.00 C 15300.00 15300.00 2013-11-01 00:00:00.000 918.00 C 918.00 16218.00 2013-11-01 00:00:00.000 1536.90 D -1536.90 14681.1 2013-11-01 00:00:00.000 1428.99 C 1428.99 16110.09 2013-11-04 00:00:00.000 7938.20 D -7938.20 ...... 2013-11-04 00:00:00.000 175051.18 D -175051.18 2013-11-04 00:00:00.000 1190.00 C 1190.00 Existe uma forma de criar essa coluna acumulando o valor da coluna atual com a anterior?
  4. marcos.dmasceno

    Somar valores da linha anterior com a próxima.

    Olá Motta. Eu tentei usar o over mas o resultado na coluna acumulado continua se repetindo só que agora fracionada.
×

Informação importante

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