SQL-Query contest...

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-)