Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Ajuda cálculo

Pessoal, boa tarde!
Preciso de ajuda

Olha só, eu tenho uma consulta de acidentes para a empresa e neste quadro em anexo tenho dois campos que preciso tratar.
Acidente que deve me retornar a quantidade de acidentes que tive no mes e ano selecionado ( faço um count do funcionario), pois tenho uma tabela só de acidentes.

Agora o campo Abertos, eu queria trazer da seguinte maneira, são todos os acidentes que aconteceram antes do ano e mes selecionado ou acidentes que o funcionário retornou (data de retorno)  deve ser igual ou maior que o  mês que tenho selecionado.

Exemplo:

Seleciono janeiro de 2012. No campo Acidentes eu listo a quantidade de acidentes ocorridos no mes e ano selecionado (01/12).
agora no campo abertos eu preciso mostrar os acidentes que estão em aberto ainda, onde a data seja menor que a selecionada (01/12) ou que a data de retorno do funcionário seja >= ano mes selecionado. Isso são considerados acidentes em aberto.
Porém não estou conseguindo fazer isto no meu script.

Um print do script da tabela de acidentes:

ACIDENTE:

LOAD NUM(MONTH(DT_ACIDENTE)) &'-'&

          YEAR(DT_ACIDENTE)            AS ACID_CHAVE_ANOMES_ACIDENTE,

          CAD                                     AS ACID_CAD_FUNCIONARIO,

          NOME                                  AS ACID_NOME_FUNCIONARIO,

          SETOR                                AS ACID_SETOR,  

          TURNO                                AS ACID_TURNO,

          TIPO                                   AS ACID_TIPO_ACIDENTE,

          LOCAL_LESAO                   AS ACID_LOCAL_LESAO,

         DATE(DT_ACIDENTE)            AS ACID_DT_ACIDENTE,

         DAY(DT_ACIDENTE)             AS ACID_DT_DIA_ACIDENTE,

         MONTH(DT_ACIDENTE)            AS ACID_DT_MES_ACIDENTE,

         YEAR(DT_ACIDENTE)             AS ACID_DT_ANO_ACIDENTE,

         NUM(MONTH(DT_ACIDENTE))      AS ACID_NR_MES_ACIDENTE,

         MONTH(DT_ACIDENTE) & '/' &

         YEAR(DT_ACIDENTE)              AS ACID_DT_MESANO_ACIDENTE,

         DIAS_AFAST_MES                  AS ACID_DIAS_AFASTAMENTO_MES,

         DIAS_AFAST                           AS ACID_DIAS_AFAST,

         round(AFASTADO_MES,1)        AS ACID_DIAS_AFASTAMENTO,

         DIAS_UTEIS                            AS ACID_DIAS_UTEIS_MES,    

         DATE(AFASTAMENTO)            AS ACID_DT_AFASTAMENTO,

         DATE(RETORNO)                AS ACID_DT_RETORNO, 

        SIT                                      AS ACID_SITUACAO,

        DATA_CAT                          AS ACID_DT_CAT,

        DESCAU                            AS ACID_DESC_CAUSA_ACIDENTE,

        DESCRIÇÃO                      AS ACID_DESCRICAO_ACIDENTE

FROM C:\Qlikview\Producao\QVD\ACIDENTE.qvd (qvd);

Alguém tem alguma dica de como posso tratar isso ?

3 Replies
Not applicable
Author

No SQL eu fiz da seguinte maneira, criei uma function para retornar as quantidades, porém preciso listar agora quem são esses funcionarios, dias, informacoes de turno e tipo de acidente:

select
a.NOME qtde
from
INDICADOR_ACIDENTES_RH a
where
to_char(a.dt_acidente,'YYYYMM') < to_char(add_months(w_data_acidente,0),'YYYYMM') and
a.RETORNO_MESANO >= w_mesano_acidente and
a.DIAS_AFAST > 0
union all
select
a.NOME qtde
from
INDICADOR_ACIDENTES_RH a
where
to_char(a.dt_acidente,'YYYYMM') < to_char(add_months(w_data_acidente,0),'YYYYMM') and
a.dias_afast > 0 and
a.SIT = 'Em Aberto'
)

Precisaria de uma expressão mais ou menos assim para tratar esta condição no Qlikview:

Se ANO e mes ACIDENTE < que o Ano selecionado no filtro

e a data_retorno >= ano e mes selecionado no filtro

e os dias de afastamento sejam > zero

unindo

com

ANO e mes ACIDENTE < que o Ano selecionado no filtro

e os dias de afastamento sejam > zero

e a situação do acidente = aberta.

Poderia até criar uma tabela de acidentes anteriores, porém não consigo pensar como amarrar isto.

Not applicable
Author

Modificadores de Conjunto

Um conjunto pode ser modificado por uma seleção adicional ou alterada.
Essa modificação pode ser escrita na expressão do conjunto.
O modificador consiste em um ou em vários nomes de campo, cada um seguido de uma seleção que deve ser feita no campo, tudo entre < e >,como em <Ano={2007, 2008}, Região={EUA}>
Os nomes e os valores de campo podem estar entre aspas, por exemplo, <[Região das Vendas]={’Costa oeste’, ‘América do Sul’}>.
Existem várias formas de definir a seleção:
Um caso simples é uma seleção baseada nos valores selecionados de outro campo, por exemplo, <DataPedido = DataEntrega>. Esse modificador usará os valores selecionados de “DataEntrega” e os aplicará como uma seleção em “DataPedido”.
Existem várias formas de definir a seleção:
Um caso simples é uma seleção baseada nos valores selecionados de outro campo, por exemplo, <DataPedido = DataEntrega>. Esse modificador usará os valores selecionados de “DataEntrega” e os aplicará como uma seleção em “DataPedido”.
Além disso, a seleção dentro de um campo pode ser definida usando operadores de conjunto e vários conjuntos de elementos, como com o modificador
<Ano = {"20*", 1997} - {2000}>
que selecionará todos os anos iniciados por “20”, além de “1997”, exceto “2000”.
A notação acima define novas seleções, independentemente da seleção atual no campo. Contudo, se desejar basear a sua seleção na seleção atual no campo e incluir valores de campo, você pode, por exemplo, usar um
Nota: se houver muitos valores diferentes – mais de duzentos – evite essa operação, pois ela exigirá muitos recursos da CPU.
Nota: as pesquisas não diferenciam letras maiúsculas de minúsculas e também são feitas para valores excluídos.
Dica: conjuntos de elementos vazios, explicitamente, como <Produto = {}>, ou
implicitamente, como <Produto = {"Visão Imaginária"}> (uma pesquisa sem
resultados), indicam que nenhum produto foi encontrado, ou seja, eles resultarão em
um conjunto de registros que não está associado a nenhum produto.
Modificador <Ano = Ano + {2007, 2008}>. Uma forma mais curta e equivalente de escrever isso é <Ano += {2007, 2008}>, ou seja, o operador de atribuição define implicitamente uma união.
Além disso, interseções, exclusões e diferenças simétricas implícitas podem ser definidas com “*=”, “–=” e “/=”.
Por fim, para os campos no modo AND, também há a possibilidade de uma exclusão forçada. Se desejar forçar a exclusão de valores de campo específicos, será necessário usar “~” antes do nome do campo.

cesaraccardi
Specialist
Specialist

Olá Juliana, você pode criar este cálculo dos abertos no próprio objeto gráfico sem a necessidade de realizar no script, de modo que o cálculo fica dinâmico conforme as seleções. Para isto você necessita do recurso set analysis, dê uma olhada no manual de referência, tópico Análise de Conjunto (Set Analysis). Tem bem explicada a sintaxe inclusive com exemplos.

Abraços