Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Galera, boa tarde,
to tentando fazer uma parada que é um simples cursor no Sql mas não consigo fazer no qlik...
O objetivo é preencher o campo cod_conta_contabil com o numero da conta contabil anterior caso essa esteja vazia, e fazer isso até o final da tabela. Porém, tenho N linhas em branco abaixo de cada conta contábil....
Por exemplo:
Esta tabela
1128210000 | C.C. 1128210000 | |
| ||
015 - Codigo 015 | ||
019 - Codigo 019 | ||
021 - Codigo 021 |
Deve se tornar esta tabela
1128210000 |
| |
1128210000 | 015 - Codigo 015 | |
1128210000 | 019 - Codigo 019 | |
1128210000 | 021 - Codigo 021 |
A primeira linha será eliminada e só ficarão as linhas debaixo com a conta contabil correta.
LOAD seq
, if ( cod_conta_contabil = '', Previous(cod_conta_contabil), cod_conta_contabil ) as cod_conta_contabil
, cod_conta_contabil as cod_conta_contabil_original
, nome_conta_contabil
, movimentacao
, saldocontabil
Resident tabela
While seq < maxseq
Order By seq
;
Podem me ajudar?
Tente assim:
If(RecNo() = 1 and Not IsNull(cod_conta_contabil), // Aqui você verificará se contém dado no primeiro registro
cod_conta_contabil, // Se tiver ele preencherá com ele mesmo
If(IsNull(cod_conta_contabil), // ele verificará se cod_conta_contabil é nulo
Peek([Código da Conta Contábil]), // Se for, ele irá pegar o último registro,
cod_conta_contabil // Senão apenas o cod_conta_contabil
)
) as [Código da Conta Contábil]
Acho que irá resolver
Tente assim:
If(RecNo() = 1 and Not IsNull(cod_conta_contabil), // Aqui você verificará se contém dado no primeiro registro
cod_conta_contabil, // Se tiver ele preencherá com ele mesmo
If(IsNull(cod_conta_contabil), // ele verificará se cod_conta_contabil é nulo
Peek([Código da Conta Contábil]), // Se for, ele irá pegar o último registro,
cod_conta_contabil // Senão apenas o cod_conta_contabil
)
) as [Código da Conta Contábil]
Acho que irá resolver
Rodolfo, para isso você vai precisar utilizar a função Peek()
O previous verifica o registro anterior, porém quando você estiver no segundo passo ele vai retornar nulo, por exemplo:
Col1 Col2
10000 A
B -> Previous (Col1) = 10000
C -> Previous (Col1) = Sem Valor
2222 D -> Previous (Col1) = Sem Valor
E -> Previous (Col1) = 222
Excelente, resolveu.
aux5:
Load seq
, If(RecNo() = 1 and Not cod_conta_contabil = '', cod_conta_contabil
, If(cod_conta_contabil = '', Peek([cod_conta_contabil2]), cod_conta_contabil)) as cod_conta_contabil2
, cod_conta_contabil as cod_conta_contabil_original
, nome_conta_contabil
, movimentacao
, saldocontabil
Resident aux4
;
Agora partindo para o próximo desafio.
Abraço!