Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
ernestolmalves
Contributor III
Contributor III

Balancete, Saldo anterior

Bom dia,

Alguém pode me ajudar e me dar uma ideia de como calcular a última coluna da tabela abaixo, SALDOMÊS ?

Já tentei com Aggr, rangesum, peek, etc, mas ainda não achei uma forma correta.

     

CODIGOEMPRESACODIGOESTABCONTACTBDATASALDOVALORDEBVALORCREDSALDOMÊS
5991112017-12-018997490899749,00
5991112018-01-011930832,22830571,1910,00
5991112018-02-011159772,51133074,4726708,00
5991112018-03-011881628,21908326,2410,00
5991112018-04-01767886,44741104,2426792,20
5991112018-05-01772650,66799432,8610,00
5991112018-06-01967849,2967849,210,00

Desde já agradeço pela atenção.

1 Solution

Accepted Solutions
ernestolmalves
Contributor III
Contributor III
Author

Eu consegui resolver.

Usando uma combinação de previous() e peek(), cheguei no resultado que esperava.

    If(Previous(AutoNumberHash128(CODIGOEMPRESA,CODIGOESTAB,CONTACTB))=AutoNumberHash128(CODIGOEMPRESA,CODIGOESTAB,CONTACTB),

    If(Peek(ContaSaldo,-2)=AutoNumberHash128(CODIGOEMPRESA,CODIGOESTAB,CONTACTB),

                (Peek(SALDOCTBMES,-2)-Previous((VALORCRED-VALORDEB)))-(VALORCRED-VALORDEB), //

                Previous((VALORDEB-VALORCRED))-(VALORCRED-VALORDEB)),

(VALORDEB-VALORCRED)

) as SALDOCTBMES

Fica a dica para quem precisar de algo parecido.

View solution in original post

10 Replies
MarioCenteno
Creator III
Creator III

Try

=([VALORDEB]-[VALORCRED])

ernestolmalves
Contributor III
Contributor III
Author

SALDOMÊS = SALDOMÊS_ANTERIOR-(VALORDEB-VALORCRED)

MarioCenteno
Creator III
Creator III

Try

let vMaxDate  = '=max(DATASALDO)'& chr(39) & 'DD MMM YYYY' & chr(39) & ')';

let vMaxDay   = '=day(max(DATASALDO))';

let vMaxMonth  = '=month(max(DATASALDO))';

let vMaxYear  = '=max(Year)';

let vPriorMonth  = '=month(addmonths(max(DATASALDO),-1))';

let vPriorMonthYear = '=Year(addmonths(max(DATASALDO),-1))';

let vPriorYear  = '=vMaxYear-1';

let vPriorYearDate = '=date(addyears(max(DATASALDO),-1),' & chr(39) & 'DD MMM YYYY' & chr(39) & ')';

[table]:

load

codigoemprea,

codigoestab,

Year([DATASALDO]) as Year,

Month(DATASALDO) as Month,

Day(DATASALDO) as Day,

Date(monthstart(DATASALDO), 'MM-YYYY') as MonthYear;

select * from table;

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

SALDOMÊS_ANTERIOR = (SUM({<Year={'$(vPriorMonthYear)'},Month={'$(vPriorMonth)'},Day={'<=$(vMaxDay)'},Date=,MonthYear=>}SALDOMÊS)


SALDOMÊS = SUM({<Year={'$(vPriorMonthYear)'},Month={'$(vPriorMonth)'},Day={'<=$(vMaxDay)'},Date=,MonthYear=>}SALDOMÊS)


-


(VALORDEB-VALORCRED)


)

ernestolmalves
Contributor III
Contributor III
Author

Mario,

A coluna SALDOMÊS não existe no BD, é a que preciso calcular, sempre pegando o Saldo_Anterior.

Pelo que entendi, fiz o script assim :

let vMaxDate  = '=max(DATASALDO)'& chr(39) & 'DD MMM YYYY' & chr(39) & ')';

let vMaxDay   = '=day(max(DATASALDO))';

let vMaxMonth  = '=month(max(DATASALDO))';

let vMaxYear  = '=max(Year)';

let vPriorMonth  = '=month(addmonths(max(DATASALDO),-1))';

let vPriorMonthYear = '=Year(addmonths(max(DATASALDO),-1))';

let vPriorYear  = '=vMaxYear-1';

let vPriorYearDate = '=date(addyears(max(DATASALDO),-1),' & chr(39) & 'DD MMM YYYY' & chr(39) & ')';

TempTable_Data:

Load

AutoNumberHash128(CODIGOEMPRESA,CODIGOESTAB,CONTACTB) as %Conta,

    CODIGOEMPRESA,

    CODIGOESTAB,

    CONTACTB,

    DATASALDO,

    VALORDEB,

    VALORCRED

FROM [lib://DOCS/SALDOCTBMENSAL.qvd](qvd);

DATA:

Load

    AutoNumberHash128(CODIGOEMPRESA,CODIGOESTAB,CONTACTB) as %Conta,

CODIGOEMPRESA,

CODIGOESTAB,

    CONTACTB,

Year([DATASALDO]) as Year,

Month(DATASALDO) as Month,

Day(DATASALDO) as Day,

Date(monthstart(DATASALDO), 'MM-YYYY') as MonthYear,

    DATASALDO,

    VALORDEB,

    VALORCRED

    Resident TempTable_Data

    Order by CODIGOEMPRESA,CODIGOESTAB,CONTACTB,DATASALDO;

   

Drop Table TempTable_Data;   

Agora para ter a coluna SALDOMÊS eu faria no set analysis em uma tabela, ou no script, mas é essa parte que não está dando certo.

MarioCenteno
Creator III
Creator III

Try calculating the current month's balance


SALDOMÊS CURRENT =

SUM({<Year={'$(vMaxYear)'},Month={'$(vMaxMonth)'},Day={'<=$(vMaxDay)'},Date=,MonthYear=>}(VALORDEB-VALORCRED)

ernestolmalves
Contributor III
Contributor III
Author

Ainda não deu certo.

SaldoMês.PNG

MarioCenteno
Creator III
Creator III

Ernesto

Could you pass your file to check it?

ernestolmalves
Contributor III
Contributor III
Author

Segue, QVF e QVD...

MarioCenteno
Creator III
Creator III

QVF With loaded data