Ok,
ecco cosa devi fare:
aggiungi alla tua tabella una colonna 'periodo' in cui definisci i periodi.
(occhio..usa lo stessa sigla per tutti tipo p1,p2,pn...altrimenti fai un casino!)
CODAZI CODDIP COGNOME NOME CODCAU DAL AL DALLE ALLE periodo
1 1 ROSSI MARCO 301 19/09/2005 0.00 23/09/2005 0.00 p1
1 1 ROSSI MARCO 301 09/12/2005 0.00 09/12/2005 0.00 p2
1 4 BIANCHI FABIO 301 12/01/2004 0.00 16/01/2004 0.00 p1
1 4 BIANCHI FABIO 301 02/04/2004 0.00 02/04/2004 0.00 p2
1 4 BIANCHI FABIO 301 02/05/2004 0.00 10/05/2004 0.00 p3
poi la query:
select *
FROM
(
--concateni per creare il periodo in un unica colonna...
SELECT COGNOME,NOME,CODCAU,DAL+' '+AL+' '+DALLE+' '+alle as data,periodo
FROM [pivot]
) as s
PIVOT
(
max(data)
FOR periodo IN ([p1],[p2],[p3])
)AS p
è qsto che intendevi?!
COGNOME NOME CODCAU p1 p2 p3
BIANCHI FABIO 301 12/01/2004 0.00 16/01/2004 0.00 02/04/2004 0.00 02/04/2004 0.00 02/05/2004 0.00 10/05/2004 0.00
ROSSI MARCO 301 19/09/2005 0.00 23/09/2005 0.00 09/12/2005 0.00 09/12/2005 0.00 NULL
poi ovviamente, se si, nel pezzo di codice FOR periodo IN ([p1],[p2],[p3]) dovresti o inresire a mano tutti i periodi o creare una query dinamica per popolarla (magari leggi da una tabella i periodi ncessari)
altrimenti, più complessa se ti interessa avere separati i campi DAL, AL, DALLE, ALLE
select t1.CODCAU,t1.COGNOME,t1.NOME,t1.p1,t2.p1,t1.p2,t2.p2,t1.p3,t2.p3
from
(
select *
FROM
(
--concateni per creare il periodo in un unica colonna...
SELECT COGNOME,NOME,CODCAU,DALLE+' '+alle as data,periodo
FROM [pivot]
) as s
PIVOT
(
max(data)
FOR periodo IN ([p1],[p2],[p3])
)AS p
)t1
join
(
select *
FROM
(
--concateni per creare il periodo in un unica colonna...
SELECT COGNOME,NOME,CODCAU,DAL+' '+AL as data,periodo
FROM [pivot]
) as s
PIVOT
(
max(data)
FOR periodo IN ([p1],[p2],[p3])
)AS p
)t2 on t1.CODCAU=t2.CODCAU
and t1.COGNOME=t2.COGNOME
and t1.NOME=t2.NOME
CODCAU COGNOME NOME p1 p1 p2 p2 p3 p3
301 BIANCHI FABIO 16/01/2004 0.00 12/01/2004 0.00 02/04/2004 0.00 02/04/2004 0.00 10/05/2004 0.00 02/05/2004 0.00
301 ROSSI MARCO 23/09/2005 0.00 19/09/2005 0.00 09/12/2005 0.00 09/12/2005 0.00 NULL NULL