Skip to main content
Announcements
Accelerate Your Success: Fuel your data and AI journey with the right services, delivered by our experts. Learn More
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

retroativo de datas

pessoal boa noite, estou com o seguinte problema.

tenho uma tabela com varias linhas , porem tenho um campo chamado dat_cricacao

tenho q fazer um filtro dentro de uma tabela dinamica

preciso descobrir os items dessa tabela com data retroativa

exemplo

dat_criacao  - 30 DIAS

dat_criacao  - 60 DIAS

dat_criacao  - 90 DIAS

dat_criacao  - 180 DIAS

dat_criacao  - 365DIAS

Alguem poderia me ajudar sobre esse assunto eu nao consegui uma solução ainda,, Obrigado por enquanto.

Labels (1)
1 Solution

Accepted Solutions
aderlanrm
Partner - Specialist
Partner - Specialist

Bom dia Roberto,

Concordo com o Augusto, isso resolve para você?

Você pode ainda usar a sua consulta SQL direto, não precisa obrigatóriamente fazer no QlikView, você usará na tabela dinâmica o resultado da tua consulta.

Exemplo:

// Comando de conexão

SQL select sum(qtd_pecas)

from tabela

where dat_cricacao > ((sysdate+1)-30);

Aderlan Rodrigues
Analista, Arquiteto de Dados e Piloto Amador Drone FPV
 (41) 9 9917-0869  www.BIdeAZ.com.br  Youtube.com/bideaz  Instagram.com/bideaz.in

"Nada é tão inútil quanto fazer eficientemente o que não deveria ser feito." (Peter Drucker)

View solution in original post

5 Replies
aderlanrm
Partner - Specialist
Partner - Specialist

Olá Roberto,

Isso vai depender do valor que está nesse campo.

Se for 30, 60, 90... basta incluilo na tabela dinâmica e nas propriedades do objeto, aba apresentação, escolha esse campo e marque a opção "seletor dropdown", isso colocará um icono no rótulo da coluna que quando você clicar basta digitar qualquer valor, exemplo: ">60", 180,">20<180" e pronto, estaram selecionados, igual se faz com as listas e outros objetos.

Se esse campo for data, no script crie um novo campo e calcule a diferança de dias até a data atual, como no exemplo abaixo, depois basta usar o campo e fazer o que lhe falei a cima.

Abraço.

Exemplo:

LOAD dat_criacao,

    now()-dat_criacao as dias

...

Aderlan Rodrigues
Analista, Arquiteto de Dados e Piloto Amador Drone FPV
 (41) 9 9917-0869  www.BIdeAZ.com.br  Youtube.com/bideaz  Instagram.com/bideaz.in

"Nada é tão inútil quanto fazer eficientemente o que não deveria ser feito." (Peter Drucker)
Not applicable
Author

Aderlan , eu quero mostrar as quantidades de alguns produtos que estejam em um intervalo de data

sem sql eu faria assim

select sum(qtd_pecas)

from tabela

where dat_cricacao > ((sysdate+1)-30)

nesse select eu consigo somar as quantidades de conforme o intervalo de data , porem no qlikview eu jogo a tabela toda , preciso fazer isso em uma tabela dinamica.

exemplo

grupo           empresa            qtd a 60 dias  qtd a 90 dias qtd a 180 dias
AMERICA    EMPRESA 1        200                 600                950

é mais ou menos isso, porem nao tenho ideia de como fazer isso no qlick view.

pode me ajudar ? acho q ficou mais claro a minha duvida agora

Not applicable
Author

Roberto, essa data da Criação seria sempre comparado com a data atual? Ou da seleção?

Para data atual, eu faria um campo na mesma tabela que você está carregando esses fatos:

div(today() - dat_criacao, 30) * 30 as DIAS_RETROATIVO

// se a diferença for 20 dias, irá retornar 0... se for 45, irá retornar 30, se for 76 irá retornar 60 e assim por diante.

E colocaria esse campo na dimensão e dá um sum.

Se quiser 'enfeitar' a descrição do campo, só concatenar...

'Quantidade de dias retroativo: '&div(today() - dat_criacao, 30) * 30 as DIAS_RETROATIVO

Espero ter ajudado.

aderlanrm
Partner - Specialist
Partner - Specialist

Bom dia Roberto,

Concordo com o Augusto, isso resolve para você?

Você pode ainda usar a sua consulta SQL direto, não precisa obrigatóriamente fazer no QlikView, você usará na tabela dinâmica o resultado da tua consulta.

Exemplo:

// Comando de conexão

SQL select sum(qtd_pecas)

from tabela

where dat_cricacao > ((sysdate+1)-30);

Aderlan Rodrigues
Analista, Arquiteto de Dados e Piloto Amador Drone FPV
 (41) 9 9917-0869  www.BIdeAZ.com.br  Youtube.com/bideaz  Instagram.com/bideaz.in

"Nada é tão inútil quanto fazer eficientemente o que não deveria ser feito." (Peter Drucker)
Not applicable
Author

vlw pessoal eu fiz dessa maneira dentro da planilha mesmo

=If((date(today()) - DAT_CRIACAO) <  30, '1- (Até 30 Dias)',

          if((date(today()) - DAT_CRIACAO) >= 30 and (date(today()) - DAT_CRIACAO) < 60, '2-     (1 > 3 Meses)',

                    if((date(today()) - DAT_CRIACAO) >= 60 and (date(today()) - DAT_CRIACAO) < 90, '3-    (3 > 6 Meses)',

                              if((date(today()) - DAT_CRIACAO) >= 90 and (date(today()) - DAT_CRIACAO) < 180, '4-    (6 > 1 Ano)',

                                        if((date(today()) - DAT_CRIACAO) >= 180 and (date(today()) - DAT_CRIACAO) <  365, '5-     (1 Ano)',

                                          if((date(today()) - DAT_CRIACAO) >= 180 and (date(today()) - DAT_CRIACAO) >  365, '6-     ( > 1 Ano)'))))))

deu certo vlw