Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
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"})