Con una serie di script ho messo in un DB di MSSQL una serie di email inviate da un programma che monitora i disservizi di un certo tipo di apparecchiatura. Per ogni problema ho un primo messaggio con la segnalazione dell'errore e un secondo con la sua risoluzione. Quale sia l'errore apparso o risolto lo capisco dall'oggetto della email.
Dal corpo della stessa email estrapolo IP del dispositivo coinvolto, relativo serial number e data e ora dell'evento.
Ottengo quindi una tabella di questo tipo:
- Codice: Seleziona tutto
Oggetto |Periferica |Tipo_Errore |Indirizzo_Ip |Seriale |Date_Time |Stato
[Error code 745]|PIPPO1 |Sensore guasto |192.168.11.24 |ABC12345 |2016-07-25 12:39:06.000|down
[Error code 889]|PLUTO5 |Motore fermo |192.168.11.220|XYZ03150 |2016-07-25 12:40:05.000|up
[Error code 889]|PLUTO5 |Motore fermo |192.168.11.220|XYZ03150 |2016-07-25 12:39:05.000|down
[Error code 745]|PIPPO1 |Sensore guasto |192.168.11.24 |ABC12345 |2016-07-25 12:29:05.000|up
A me servirebbe riuscire a accoppiare ciascuna riga di disservizio (stato "down") con la sua relativa riga di riprisitino (stato "up") e fare la differenza tra le due colonne Date_Time per capire quanto è stata ferma.
Alla fine, la sommatoria di tutti i fermi raggruppati per matricola mi dovrebbe dare il totale del tempo di fermo.
Il massimo sarebbe pure escludere evantuali righe non accoppiabili. Se per essempio una macchina si guasta ma poi viene dismessa avrei la riga di down ma non quella di up e non vorrei che questo sballasse il conteggio.
Grazie per l'aiuto!