Buongiorno a tutti,
scrivo per un esigenza informatica, su SQL.
Uso da poco SQL, anche se ho generato qualche query abbastanza elaborata, (ma col senno di poi, abbastanza ridicole)
ed ora che mi sto addentrando per lavoro, in situazioni più complesse, ho bisogno di un aiuto per capire alcuni concetti.
Il problema, sicuramente sarà stato trattando più volte in altri post, (ma faccio fatica a trovare quello calzante)
è quello legato al raggruppamento di un determinato evento, con diverse variabili, prendendo quello con la data maggiore.
Mi spiego meglio.
Innanzi tutto posto i dati, così come mi scendono, cercando un cliente specifico.
(la query poi dovrà girare considerando tutti i clienti in gestione)
Descrizione dei campi:
ID Processo: identifica con un codice Alfa-Numerico, la riga dell'attività, ogni attività, anche se si ripete come nome, avrà un ID processo nuovo e differente.
Cod_Clt1 e Cod_Clt2: sono due codici identificativi del cliente.
Attività: Indica il tipo di operazione in corso.
Nell'esempio, l'Assegnazione della Squara,
l'assegnazione dell'auto,
e per ATT. Squadre, viene indicata l'attività di "attivazione" presso il cliente. (è proprio su questo campo che gira la mia ricerca)
Fornitore: & Squadra: sono due identificativi dell'azienda appaltata e della squadra che andrà dal cliente.
Data: la data di intervento presso il cliente.
Note1, & Note2: & Note3: potrebbero contenere o meno, delle note inserite dai tecnici,
alla chiusura dell'attività.
Nell'estrazione vedrete delle righe completamente duplicate, ma perchè ho rimosso delle colonne, che nn mi risulta esportare alla fine.
Siccome come si può vedere dall'estrazione, la stessa attività: ATT SQUADRE, potrebbe ripetersi + volte, a causa magari di uscite a vuoto, i dati che si vogliono raccogliere x l'analisi sono:
La nota1 più recente, la nota2 + recente, la nota3 + recente,
dell'attività + recente,
dell'attività: Att Squadre, raggruppato x ogni cliente in gestione,
quindi rimuovendo la ricerca sul codice 1231231, che ho usato x impostare la query.
Si vuole raccogliere questo dettaglio, per tutti i 300/400 clienti al giorno che hanno un attività aperta... quindi alla fine
ci vorrà un Group by, Cod_Clt1, o Cod_clt_2.
Credo, si debba far ricorso alle tabelle Temporanee, con delle subquery.. ma.. nonostante ci abbia provato in diversi modi,
arrivati ad un certo punto mi perdo completamente nelle sintassi e nei ragionamenti.
Mi date una mano?
Magari con un esempio x risolvere il problema nell'immediato, ma se possibile anche con una descrizione delle logiche che girano dietro le subquery..che a quanto pare, rendono SQL uno strumento potentissimo se le si sanno usare bene!
Grazie mille mille mille..
Albi
Attualmente la query che faccio girare fa un filtro su Max data
SELECT DISTINCT
tbl_Attività.ID_Processo,
tbl_AttivitàCod_Cliente_1,
tbl_Attività.Cod_Cliente_2,
tbl_Attività.Attività',
tbl_Attività.Fornitore',
tbl_Attività.Squadra',
max(tbl_Attività.Data),
tbl_Attività.Note1,
tbl_Attività.Note2',
tbl_Attività.Note3'
FROM
tbl_Attività
WHERE
tbl_Attività.Cod_Cliente_1 = "1231231"
ORDER BY
tbl_Attività.Data
ma la riga che mi compone, restituisce è la seguente:
Quindi, mi prende la data maggiore, ma le Note1 sono quelle del 28/06, e non quelle del 06/09,
le note2, sono blank e ok,
e le Note3, prende quelle del 28/06, e non quelle del 31-08-
HeLP!! :|