Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Want to see what's currently in public preview? We've pulled it all together in one place. Check it out here
cancel
Showing results for 
Search instead for 
Did you mean: 
jordansoares
Contributor III
Contributor III

Count com IF

Eu tenho a seguinte expressão em uma coluna na tabela:

IF(estoque-(venda_media_diaria*prazo_entrega) <= '0',IF(existe_pedido_compra = 'S',IF(Date(pedido_data + prazo_entrega,'DD/MM/YYYY') > Date(Today() + estoque / venda_media_diaria,'DD/MM/YYYY'),'S','N'),'S'),'N')

Essa expressão retorna 'S' quando um determinado produto vai ficar com estoque "0" em um futuro próximo.

Estou tentando contar quantos produtos estão retornando 'S' coma seguinte expressão:

Count("IF(estoque-(venda_media_diaria*prazo_entrega) <= '0',IF(existe_pedido_compra = 'S',IF(Date(pedido_data + prazo_entrega,'DD/MM/YYYY') > Date(Today() + estoque / venda_media_diaria,'DD/MM/YYYY'),'S','N'),'S'),'N')" = 'S',codigo_produto)

mas não está dando certo.

Alguém sabe me dizer o que está errado?

1 Solution

Accepted Solutions
jordansoares
Contributor III
Contributor III
Author

Consegui o resultado esperado criando esse meu IF no Script conforme a sua recomendação e fazendo uma adaptação no pedido. Segue o Script:

If(estoque-(venda_media_diaria*forn_pzentrega) <= 0,If (qtde_pedido > '0',If(Date(pedido_data + prazo_entrega,'DD/MM/YYYY') > Date(Today() + estoque / venda_media_diaria),'DD/MM/YYYY'),'S','N'),'S'),'N') AS ruptura_futura

Com esse IF no Script, fiz o Count(ruptura_futura={"S"})

View solution in original post

8 Replies
RafaMartins
Creator II
Creator II

Boa tarde,

pode ser que assim funcione (Provavelmente não);

Count({<"IF(estoque-(venda_media_diaria*prazo_entrega) <= '0',IF(existe_pedido_compra = 'S',IF(Date(pedido_data + prazo_entrega,'DD/MM/YYYY') > Date(Today() + estoque / venda_media_diaria,'DD/MM/YYYY'),'S','N'),'S'),'N')" = {'S'}>}codigo_produto)

Oque eu sugiro é criar um campo no script com esse seu if e depois usa-lo em um count.

jordansoares
Contributor III
Contributor III
Author

Não deu certo!

Pensei em fazer o IF no Script, mas é porque essas informações vem de tabelas diferentes, aí seria um pouco mais complexo.

Hermann
Contributor
Contributor

Está dando algum erro, ou somente não está trazendo a informação correta que você necessita?

Tenta usar o código abaixo...

=Count({<IF(estoque-(venda_media_diaria*prazo_entrega) <= 0,IF(existe_pedido_compra = 'S',IF(Date(pedido_data + prazo_entrega,'DD/MM/YYYY') > Date(Today() + estoque / venda_media_diaria,'DD/MM/YYYY'),'S','N'),'S'),'N') = 'S'>} codigo_produto)

 

jordansoares
Contributor III
Contributor III
Author

Não deu certo!

Não está dando erro. Ele apenas está trazendo o resultado errado. Na realidade, ele está contando "codigo_produto" sem levar em consideração a expressão, ou seja, todos os produtos. Mesmo que eu coloque = 'S' ou  = 'N', sempre me retorna a quantidade total de produtos.

Hermann
Contributor
Contributor

ok... acredito que neste formato funcione, pode ser que tenha algum erro de expressão, mas a idéia é essa... Você faz um if com seus 'false' e 'true' e no final se eles forem igual a 'S', você coloca como true o count(codigo_produto)... segue expressão...

 

if(IF(estoque-(venda_media_diaria*prazo_entrega) <= 0,
IF(existe_pedido_compra = 'S',
IF(Date(pedido_data + prazo_entrega,'DD/MM/YYYY') > Date(Today() + estoque / venda_media_diaria,'DD/MM/YYYY'),'S','N')
,'S')
,'N') = 'S', count(codigo_produto))

jordansoares
Contributor III
Contributor III
Author

Não deu certo!

Quando faço:

if(IF(estoque-(venda_media_diaria*prazo_entrega) <= 0,
IF(existe_pedido_compra = 'S',
IF(Date(pedido_data + prazo_entrega,'DD/MM/YYYY') > Date(Today() + estoque / venda_media_diaria,'DD/MM/YYYY'),'S','N')
,'S')
,'N') = 'S', count(codigo_produto))

             ^

RETORNA "0"

Quando faço:

if(IF(estoque-(venda_media_diaria*prazo_entrega) <= 0,
IF(existe_pedido_compra = 'S',
IF(Date(pedido_data + prazo_entrega,'DD/MM/YYYY') > Date(Today() + estoque / venda_media_diaria,'DD/MM/YYYY'),'S','N')
,'S')
,'N') = 'N', count(codigo_produto))

             ^

RETORNA o total de produtos existente em meu cadastro.

danilostochi
Creator II
Creator II

Poderia postar seu .qvw ou qvf para podermos analisar?

+55(44) 9 9993-3605, WhatsApp
E-Mail or Skype - danilo16stochi@hotmail.com
jordansoares
Contributor III
Contributor III
Author

Consegui o resultado esperado criando esse meu IF no Script conforme a sua recomendação e fazendo uma adaptação no pedido. Segue o Script:

If(estoque-(venda_media_diaria*forn_pzentrega) <= 0,If (qtde_pedido > '0',If(Date(pedido_data + prazo_entrega,'DD/MM/YYYY') > Date(Today() + estoque / venda_media_diaria),'DD/MM/YYYY'),'S','N'),'S'),'N') AS ruptura_futura

Com esse IF no Script, fiz o Count(ruptura_futura={"S"})