Come sommare campi orari in Base

Ciao a tutti.
Ho creato un database in cui, nella tabella principale (Tab_LAV) ho inserito 4 campi orario per segnare il tempo impiegato nell’eseguire una lavorazione. Ho anche inserito un campo dove inserisco manualmente il totale del tempo impiegato.
Dopo alcune ricerche sul web ho trovato un comando SQL che mi ha permesso di calcolare il tempo impiegato tramite ricerca, come differenza tra Orario_1 e Orario_2.
Il comando in questione è : SELECT “ID_LAV”, “Orario_1”, “Orario_2”, TO_CHAR( CAST( ‘00:’ || DATEDIFF( ‘mi’, “Orario_1”, “Orario_2” ) || ‘:00’ AS “TIME” ), ‘HH:MI’ ) AS “Ore lavoro1” FROM “Tab_LAV”.
Ho usato lo stesso comando per una seconda ricerca in relazione ai campi “Orario_3” e “Orario_4” as “Ore lavoro2”).
Il terzo passaggio che non riesco a realizzare riguarda la somma dei campi generati dalle ricerche precedenti per ottenere il tempo complessivo di lavorazione.
Ho provato ad eseguire la somma dei campi (Ore lavoro1 e Ore lavoro2) ma il risultato è un affiancamento dei valori e non la somma (ad es. 09:15 + 11:20 = 09:1511:20).
Sperando di aver fornito sufficienti informazioni, resto in attesa di ogni suggerimento e ringrazio anticipatamente chiunque avrà la pazienza e gentilezza di rispondermi.

Ciao, devi prima calcolare la somma in minuti di “Ore lavoro1” e “Ore lavoro2” : DATEDIFF( 'mi', "Orario_1", "Orario_2" ) + DATEDIFF( 'mi', "Orario_3", "Orario_4) e poi, sul risultato, applicare la conversione in HH:MM.

SELECT TO_CHAR( CAST( '00:' || DATEDIFF( 'mi', "Orario_1", "Orario_2" ) + DATEDIFF( 'mi', "Orario_3", "Orario_4" ) || ':00' AS "TIME" ), 'HH:MI' ) AS "Somma Ore lavorate" FROM "Tab_LAV"

Se la mia riposta ti ha aiutato, votala con :heavy_check_mark: (qui a sinistra)

EDIT: file database Orari.odb

Ciao Charlie, grazie infinite per la cortese e velocissima risposta. Ho provato e funziona perfettamente. Come avrai intuito, non sono molto abile con i comandi in SQL e approfitto per chiederti se è giusto il procedimento che ho usato o se è possibile e preferibile, raggruppare i comandi.

Sinteticamente: Ricerca1 - prima differenza oraria-) SELECT “ID_LAV”, “Orario_1”, “Orario_2”, TO_CHAR( CAST( ‘00:’ || DATEDIFF( ‘mi’, “Orario_1”, “Orario_2” ) || ‘:00’ AS “TIME” ), ‘HH:MI’ ) AS “Ore lavoro1” FROM “Tab_LAV”

Ricerca 2 - seconda differenza oraria-) SELECT “ID_LAV”, “Orario_3”, “Orario_4”, TO_CHAR( CAST( ‘00:’ || DATEDIFF( ‘mi’, “Orario_3”, “Orario_4” ) || ‘:00’ AS “TIME” ), ‘HH:MI’ ) AS “Ore lavoro2” FROM “Tab_LAV”

Ricerca 3 -somma oraria- il tuo comando) SELECT TO_CHAR( CAST( ‘00:’ || DATEDIFF( ‘mi’, “Orario_1”, “Orario_2” ) + DATEDIFF( ‘mi’, “Orario_3”, “Orario_4” ) || ‘:00’ AS “TIME” ), ‘HH:MI’ ) AS “Somma Ore lavorate” FROM “Tab_LAV”.

Grazie

Ciao, volendo puoi riunire tutto in un’unica Ricerca, ma la leggibilità del codice SQL ne risente pesantemente.

Ciao Charlie grazie di nuovo, allora lascio così.
Mi è rimasto un ultimo problema.
Mentre i campi Orario_1 e Orario_4 sono sempre compilati, gli altri due sono spesso vuoti e il calcolo non viene effettuato.
Inserendo 00:00 nei campi vuoti sembra andare bene lo stesso però preferirei lasciarli vuoti, eventualmente potresti dirmi come completare il comando aggiungendo che quando i campi Orario_2 e 3 sono vuoti il calcolo avvenga tra i campi 1 e 4?
Ti ringrazio in ogni caso (anche se non vorrai o non potrai rispondere) e giuro che non ti disturbo oltre.

Ok, dammi un po’ di tempo … vorrei fare delle prove.

Grazie infinite.

Smanettando un bel po’ ho visto che si può fare.
L’idea è quella di sostituire i campi Orario_2 e Orario_3 che non vengono compilati con un valore fisso all’interno di una query (ricerca) che permetta comunque i calcoli finali.
Ho scelto le ore 12 come orario, ma potrebbe essere qualsiasi ora compresa fra Orario_1 e Orario_4.
Ho pensato di usare la funzione COALESCE(Nome_Campo,Valore_Sostitutivo) che però richiede un Valore_Sostitutivo dello stesso tipo di Nome_Campo, quindi un orario.
Ma 12.00 per SQL non è un orario, ma una stringa (serie di caratteri) e quindi ho dovuto scrivere CAST( '12:' || '00' || ':00' AS "TIME" ) ) al posto di 12:00.
La query (Ricerca2 nel file allegato) funziona, ma mostra un risultato in formato decimale pur essendo un orario. Ho risolto poi questo problema nei formulari formattando opportunamente i campi.
SEGUE

Il lavoro è proseguito a gradini con Ricerca3 dove Ore lavoro1 e Ore lavoro2 sono in minuti (le ho lasciate così anche nei formulari) e Ricerca4 per il risultato finale.
Ricerca1 e Formulario 1 riassumono tutto il lavoro.
Formulario 2 mostra insieme la tabella e le query con possibilità di fare delle prove.
Il file del database è allegato alla mia prima risposta.

Grazie infinite Charlie, sei stato gentilissimo e veramente capace e disponibile.
Funziona tutto alla perfezione.