Ieri mi è arrivata da un mio collega la seguente mail:
"Se avete voglia di fare un po' di pratica con le query, vi mando quella che ho fatto stamattina.
Magari riuscite a trovare una soluzione più elegante della mia...
Voi avete questa "vista": _v1(Matricola, DataInizio, DataFine, Classe)
La tabella contiene un elenco di periodi in cui una determinata persona è legata ad una classe.
Il problema è che eventuali periodi consecutivi e con la stessa classe non sono 'accorpati'.
Esempio: per l'ospite con matricola 2004 ci sono queste due righe:
Matricola |
DataInizio |
DataFine |
Classe |
123 |
2003-10-01 |
2003-11-10 |
CL4 |
123 |
2003-11-11 |
2004-12-31 |
CL4 |
123 |
2005-01-01 |
2005-01-15 |
CL1 |
123 |
2005-01-16 |
2100-12-31 |
CL4 |
Mentre il risultato che si vuole ottenere è
Matricola |
DataInizio |
DataFine |
Classe |
123 |
2003-10-01 |
2004-12-31 |
CL4 |
123 |
2005-01-01 |
2005-01-15 |
CL1 |
123 |
2005-01-16 |
2100-12-31 |
CL4 |
Per ottenere il risultato finale non è possibile eseguire stored procedure con cursori, ecc. ma solamente una o più altre query."
Bene, io l'ho presa come una mini-sfida e mi sono messo subito all'opera e, nel giro di un'oretta, ho partorito una bella query che risolveva il problema in modo abbastanza elegante.
L'ho provata sul DB ed è risultata l'unica funzionante!!! :-D
Se volete cimentarvi nell'impresa (niente-di-che, per carità...) postate pure le vostre Query e vediamo se esiste una soluzione più elegante e performante di quella che ho trovato io... sono sicuro di sì... sigh! :,-(
NB: Se qualche mal pensante credesse che stia cercando in modo subdolo la soluzione di un problema che ho, mi mandi pure un e-mail che gli spedisco la mia soluzione... B-)