Questo tipo di richiesta l'avevo già avuto su MySql ed avevo risolto con LISTAGG, ma con SqlServer le cose cambiano ed ho risolto in altro modo.
Un problema che ho risolto di recente riguarda la possibilità di poter unire i risultati di più record nella stessa stampa.
Esempio Tabella 1
MATRICOLA | NOME | COGNOME | CITTA | LAVORO |
0 | mario | bianchi | bari | meccanico |
1 | giuseppe | rossi | foggia | autonomo |
0 | mario | bianchi | bari | idraulico |
Nel caso in cui volessi avere su un unico record di stampa :
TABELLA 2 DI STAMPA
MATRICOLA | NOME | COGNOME | CITTA | LAVORO |
0 | mario | bianchi | bari | meccanico,idraulico |
1 | giuseppe | rossi | foggia | autonomo |
Posso utilizzare la seguente query :
SELECT DISTINCT t1.MATRICOLA,t1.NOME, t1.COGNOME,
CAST(SUBSTRING((SELECT ', ' + st1.LAVORO FROM TABELLA1 st1 WHERE st1.MATRICOLA = t1.MATRICOLA ORDER BY t1.MATRICOLA FOR XML PATH('')), 3, 2000) AS VARCHAR(2000)) AS LAVORO
FROM TABELLA1 t1;
In questo modo avremo come risultato la TABELLA 2 con i lavori accorpati in un'unica colonna.
Poi ci si può divertire con group by e order by a piacimento.
Per chiarimenti sono a disposizione.
Buon Web a tutti
Elio Curtacci