Modifica dati tabella condizionati

di il
8 risposte

Modifica dati tabella condizionati

Buongiorno,
non sono un programmatore di professione, ma l'azienda per la quale lavoro mi ha chiesto di fare un lavoro con access.
Ho collegato un database nuovo al database di un software aziendale (in sola lettura) dal quale prelevare diversi dati per poi poterli dare un pasto ad un tool di power Bi (microsoft power Bi).
Tramite query ho aggregato i dati presenti nelle varie tabelle del database, arrivando ad avere un unica tabella con tutti i dati che servono per l'analisi.
Il problema è ci sono dei campi che si ripetono, in quanto sono interventi del personale, quindi può essere che una sessione di assistenza comprenda più interventi suddivisi in vari giorni.
E' possibile eseguire un controllo sulla tabella in modo che basandomi sul campo "idintervento" i campi "ore_viaggio" e "delay" contengano un solo valore e non si ripetano per ogni "idintervento" uguale ?
In pratica, in caso di campo "idintervento" multiplo, usare come filtro il campo "orario_inizio" (il più recente) in modo da usare "ore_viaggio" e "delay" una volta solo?

Questo è un estratto della tabella in questione:

id idintervento orario_inizio username delay ore_viaggio
40261 03990731 15-set-20 tommaso 106 1
40386 03990731 17-set-20 tommaso 155 1
40991 03990731 05-ott-20 tommaso 585 1
40994 03990731 05-ott-20 tommaso 590 1
41028 03990731 06-ott-20 tommaso 608 1
41029 03990731 05-ott-20 tommaso 593 1
39703 04011015 28-ago-20 francesco 18 0
38499 05016360 21-lug-20 marco 32 0
39486 05256638 21-ago-20 tommaso 17 0
40956 05854218 07-ott-20 nereo 134 0
40524 06167146 24-set-20 andrea 66 0
40525 06167146 24-set-20 francesco 66 0
40526 06167146 24-set-20 marco 66 0
40527 06167146 24-set-20 matteo 66 0
40528 06167146 24-set-20 tommaso 66 0
41010 06454708 05-ott-20 nereo 8 0

Questo il risultato che vorrei ottenere:

id idintervento orario_inizio username delay ore_viaggio
40261 03990731 15-set-20 tommaso 106 1
40386 03990731 17-set-20 tommaso 0 0
40991 03990731 05-ott-20 tommaso 0 0
40994 03990731 05-ott-20 tommaso 0 0
41028 03990731 06-ott-20 tommaso 0 0
41029 03990731 05-ott-20 tommaso 0 0
39703 04011015 28-ago-20 francesco 18 0
38499 05016360 21-lug-20 marco 32 0
39486 05256638 21-ago-20 tommaso 17 0
40956 05854218 07-ott-20 nereo 134 0
40524 06167146 24-set-20 andrea 66 0
40525 06167146 24-set-20 francesco 66 0
40526 06167146 24-set-20 marco 66 0
40527 06167146 24-set-20 matteo 66 0
40528 06167146 24-set-20 tommaso 66 0
41010 06454708 05-ott-20 nereo 8 0

I campi "delay" e "ore_viagio" per l' "idintervento" 03990731 hanno solo un valore.

Scusate per la poca chiarezza, spero che possiate aiutarmi.
Grazie.

8 Risposte

  • Re: Modifica dati tabella condizionati

    ashx ha scritto:


    Tramite query ho aggregato i dati presenti nelle varie tabelle del database, arrivando ad avere un unica tabella con tutti i dati che servono per l'analisi.
    Questo modo di operare è errato. Le query (di selezione) esistono proprio per aggregare dati da più tabelle.

    ashx ha scritto:


    I campi "delay" e "ore_viagio" per l' "idintervento" 03990731 hanno solo un valore.
    Non sono sicuro di aver capito. Nella query fai il RAGGRUPPAMENTO sui 3 campi indicati, mentre imposti PRIMO su...boh, poi non ho capito davvero...
  • Re: Modifica dati tabella condizionati

    Ciao osvaldo, nella query non eseguo nessun raggruppamento, l'esempio del risultato voluto l'ho semplicemente modificato a mano io per mostrare quello che cerco di ottenere.
  • Re: Modifica dati tabella condizionati

    Scusa ma quale è l'obbiettivo che vuoi raggiungere, ad esempio:
    • le assistenze effettuate per ogni idintervento
    • le ore di viaggio totali per ogni idintervento
    • ecc...
    crea una lista di possibili ricerche che vorresti effettuare perchè il risultato che hai fatto tu a mano ha poco senso.
  • Re: Modifica dati tabella condizionati

    L'obbiettivo come hai detto tu è quello di avere diversi tipi di dati:
    ore di assistenza effettuate per ogni cliente,
    ore di assistenza effettuate per ogni cliente,
    ecc..

    il punto è questo, se il tecnico è in trasferta dal cliente e segna 4 ore al mattino e 4 il pomeriggio si generano 2 righe, ognuna delle quali contiene il dato "ore_viaggio", in questo modo il tempo di viaggio risulta il doppio. Visto che lo strumento è tipo un calendario, se segna dalle 8 del mattino alle 6 di sera verrebbe compresa anche la pausa pranzo, quindi deve segnare 2 fasce orarie (dalle 8 alle 12 e dalle 13 alle 18 per esempio), cos' facendo però ogni riga ha dentro le ore di viaggio.

    Sto cercando di capire come fare per avere un solo valore di ore_viaggio per ogni idintervento.
  • Re: Modifica dati tabella condizionati

    ashx ha scritto:


    Sto cercando di capire come fare per avere un solo valore di ore_viaggio per ogni idintervento.
    Premesso che le query di questo genere non sono il mio forte, prova a creare una query con solo i 2 campi IDIntervento e OreViaggio. Su IDIntervento metti RAGGRUPPAMENTO, su OreViaggio metti SOMMA.
    Se questi soli 2 campi rispondono alle tue aspettative, aggiungi poi anche gli altri campi che vuoi visualizzare...credo che anche su essi ci metti RAGGRUPPAMENTO.
  • Re: Modifica dati tabella condizionati

    Hai scritto:
    L'obbiettivo come hai detto tu è quello di avere diversi tipi di dati:
    ore di assistenza effettuate per ogni cliente,
    ore di assistenza effettuate per ogni cliente,
    ecc..

    ore di assistenza effettuate per ogni cliente,
    ore di assistenza effettuate per ogni cliente,
    sono due righe doppioni

    Il resoconto che chiedi sarebbe impossibile averlo in quanto, facendo riferimento ai dati che hai attualmente mostrato, non ci sono campi che indicano orari di inizio e fine intervento.
    Le ore di viaggio, in un intervento, debbono esserci sempre o solo nel caso che sia una trasferta ?
    Forse postando un file di esempio si potrebbe vedere la struttura del database è consigliarti in modo più preciso.
  • Re: Modifica dati tabella condizionati

    Ciao,
    non posso pubblicare tutti i dati, in quanto ci sono informazioni che riguardano i nomi dei clienti ecc....
    i campi che servono ci sono tutti, mi serve solo sapere se è possibile (tramite query o vba) eseguire un controllo sulle righe per fare in modo che se lo stesso idintervento è duplicato, la voce ore_viaggio e delay vengano impostate solo sul campo con orario_inizio più recente, gli altri vanno impostati a zero.
    C'è un modo per ottenere questo?
  • Re: Modifica dati tabella condizionati

    Se i campi che servono ci sono tutti mostra un'esempio, simile a quello iniziale, dove ci siano anche essi perchè per ottenere quello che chiedi, ovvero "ore di assistenza effettuate per ogni cliente" dove basta avere :
    • IDCliente
    • iniziointervento (espresso in data/ora es. 14/10/2020 08:00:00)
    • fineintervento (espresso in data/ora es. 14/10/2020 12:00:00)
    oppure:
    • IDCliente
    • dataintervento (es. 14/10/2020)
    • orainiziointervento (es. 08:00:00)
    • orafineintervento (es. 12:00:00)
    perchè con i dati che hai scritto inizialmente non lo otterrai mai.
Devi accedere o registrarti per scrivere nel forum
8 risposte