Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bom dia a todos.
Tenho uma tabela que mostra o Código de um chamado e todos os status que este chamado passou.
Eu precisava gerar uma coluna na tabela onde ele calculasse o tempo em que o chamado ficou em cada status (acredito que teria que usar a função ABOVE para realizar esta tarefa. Mas não entendi como ela pode ser usada.
Depois que eu calcular esses tempos totais de cada chamado eu preciso exibir a soma de todos os tempos subtraindo o tempo em que o chamado ficou com o Status 'AGUARDANTO TERCEIROS'
Não sei se no próprio ABOVE eu posso gerar um IF para que quando a coluna de status for Aguardando terceiros ele coloque o tempo a seguir como ZERO.
usando o order by a coluna fica em branco
a coluna ficou em branco, ele não calculou o tempo
tá estranho demais isso.
Considere testar dessa forma:
StatusAtendimento:
LOAD
CODATENDIMENTO,
AutoNumberHash128(CODCOLIGADA,CODATENDIMENTO,CODLOCAL) AS %AtendimentoID,
CODSTATUS AS [Código do Status],
ApplyMap('MP_StatusAtendimento',CODSTATUS,NULL()) AS [Status],
DATA_STATUS AS [Data Status],
CODMOTIVOREP AS [Código Motivo de Repasse],
FROM [lib://QVDUnitech/rm_Atend_Status.QVD]
(qvd);
Left Join (StatusAtendimento)
Load
*,
If(Previous(CODATENDIMENTO)=CODATENDIMENTO and [Código do Status]<> Previous([Código do Status]),Interval([Data Status]- Previous([Data Status])), time(0) ) as Intervalo_Status
Resident StatusAtendimento Order By CODATENDIMENTO, [Data Status] desc;
Fiz adicionando o campo CODATENDIMENTO. Ele me gerou uma chave sintética, e mesmo assim apresenta a coluna em branco como anteriormente.
depois eu renomeei a coluna do CODATENDIMENTO para CODATENDMENTO_1
para que não fosse gerada a chave sintética. mas mesmo assim a coluna INTERVALO_STATUS continua em branco
Teste com esse script:
Temp:
LOAD * inline [
cod_atendimento, status, data status
226314,Agendado a responder,02/07/2021 21:40:22
226314,Em andamento,02/07/2021 21:41:07
226314,Aguardando terceiros,06/07/2021 15:59:41
226314,Em andamento,16/07/2021 13:18:00
226314,Concluído a responder,16/07/2021 13:18:21
];
Left Join(Temp)
Load
*,
If(Previous(cod_atendimento)=cod_atendimento,
Interval([data status]-Previous([data status]),'hh:mm:ss'),time(0)
) As Intervalo
Resident Temp order by [data status] asc;
O resultado aqui foi:
meu painel está bem estranho, acho que vai ser melhor eu fazer isso diretamente no sql.
nessa consulta eu tenho o CODATENDIMENTO | STATUS | DATA_STATUS
Eu preciso criar uma DATA_FIM logo após a coluna da DATA_STATUS sendo que o 1º valor da DATA_FIM será o 2º valor da coluna DATA_STATUS e assim sucessivamente
ou seja, o 2º registro da DATA_STATUS será o 1º da DATA_FIM
o 3º registro da DATA_STATUS será o 2º da DATA_FIM
o 4º registro da DATA_STATUS será o 3º da DATA_FIM...
saberia me dizer qual função eu posso usar no sql para ele me retornar esses valores? Me desculpe por tantas dúvidas, mas é que essa foi uma demanda que a diretoria me pediu e eu estou fatiando os problemas para resolver
Com o script abaixo:
Temos: