Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Tenho a seguinte situação:
Para cada registro tenho um COD, e um ano_inicio e ano Fim, preciso que crie pra cada COD, as linhas informando que ele permaneceu de ano_inicio até ano_fim.
Exemplo:
COD | ANO_INICIO | ANO_FIM
1 | 2002 | 2005
2 | 2006 | 2008
Resultado esperado:
COD | ANO_PERMANC
1 | 2002
1 | 2003
1 | 2004
1 | 2005
2 | 2006
2 | 2007
2 | 2008
Consegui fazer quando no LOAD filtro apenas um COD, segue QVW.
Eu faria assim:
1 - Pegaria em variáveis o Min Ano_Inicio e o Max Ano_Fim;
2 - Criaria uma tabela TempAno com todos os anos nesse intervalo
3 - Usaria um IntervalMatch com Left Join que associe o Ano da tabela TempAno com o intervalo Ano_Inicio e Ano_Fim da primeira tabela.
Igor,
Eu fiz isso no exemplo, mas como tenho vários códigos e cada um com se inicio e fim divergentes quando filtro apenas um COD ele funcionou, você chegou a olhar o meu exemplo anexo ?
Não consegui ver seu exemplo, não tenho mais o QlikView instalado aqui há um tempo já.
Pode colar o código aqui?
Igor,
Segue o Código, abaixo no LOAD INLINE, só te um código filtrado, quando tiro o where ele não faz pra todos os COD, existentes.
[TESTE]:
Load * Inline [
COD, ANO_INICIO, ANO_FIM
4,1971,1971
6,1976,1978
51,1984,1986
83,1978,1980
115,1988,1990
129,1982,1984
139,1980,1982
148,1990,1992
216,1986,1988
243,2000,2003
269,1992,1994
285,2012,2015
300,2009,2012
326,1994,1996
345,2003,2006
362,1996,1998
548,2006,2009
607,1974,1976
748,2021,2024
863,2024,2027
3983,2018,2021
3992,2015,2018
70605,1971,1974
70777,1998,2000
] WHERE COD = '863';
Table:
Load *
Resident TESTE;
Let vMin=Peek('ANO_INICIO', 0, 'Table');
Let vMax=Peek('ANO_FIM', 0, 'Table');
Let vPrest=Peek('Cod_Prest', 0, 'Table');
For vI = $(vMin) to $(vMax)
[DataTbl]:
Load
ANO_INICIO,
ANO_FIM,
COD,
$(vI) as ANO_PRES
resident TESTE;
Store [DataTbl] into C:\WBI\ETL\SGU\Desenvolvimento\TESTE_PREST_ANDRE1.qvd;
Next vI
Store [DataTbl] into C:\WBI\ETL\SGU\Desenvolvimento\TESTE_PREST_ANDRE.qvd;
//drop Table [DataTbl];