Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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.
CODIGOEMPRESA | CODIGOESTAB | CONTACTB | DATASALDO | VALORDEB | VALORCRED | SALDOMÊS |
599 | 1 | 11 | 2017-12-01 | 899749 | 0 | 899749,00 |
599 | 1 | 11 | 2018-01-01 | 1930832,2 | 2830571,19 | 10,00 |
599 | 1 | 11 | 2018-02-01 | 1159772,5 | 1133074,47 | 26708,00 |
599 | 1 | 11 | 2018-03-01 | 1881628,2 | 1908326,24 | 10,00 |
599 | 1 | 11 | 2018-04-01 | 767886,44 | 741104,24 | 26792,20 |
599 | 1 | 11 | 2018-05-01 | 772650,66 | 799432,86 | 10,00 |
599 | 1 | 11 | 2018-06-01 | 967849,2 | 967849,2 | 10,00 |
Desde já agradeço pela atenção.
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.
Try
=([VALORDEB]-[VALORCRED])
SALDOMÊS = SALDOMÊS_ANTERIOR-(VALORDEB-VALORCRED)
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)
)
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.
Try calculating the current month's balance
SALDOMÊS CURRENT =
SUM({<Year={'$(vMaxYear)'},Month={'$(vMaxMonth)'},Day={'<=$(vMaxDay)'},Date=,MonthYear=>}(VALORDEB-VALORCRED)
Ainda não deu certo.
Ernesto
Could you pass your file to check it?
Segue, QVF e QVD...
QVF With loaded data