>dovrei costruire una query che mi restituisca il seguente risultato:
>
>ID Dati1 Dati2 Dati3 Dati4 ...... DatiN
>1 A B D E
>2 B C D
>4 A B
>5 G H
>
>
>Avrei pensato di utilizzare L'operatore PIVOT ma, sinceramente,
>anche studiandomi la documentazione e i vari esempi trovati su
>internet, proprio non ci sono riuscito.
Mmmmm... quello che puoi ottenere con l'operatore PIVOT è questo:
USE tempdb;
CREATE TABLE dbo.foo(
ID int NOT NULL,
Dati char(1) NOT NULL
);
INSERT dbo.foo VALUES
(1, 'A'), (1, 'B'), (1, 'D'), (1, 'E')
, (2, 'B'), (2, 'C'), (2, 'D'), (4, 'A')
, (4, 'B'), (5, 'F'), (5, 'G'), (5, 'H');
SELECT ID, [A] AS Dati1, [B] AS Dati2, [C] AS Dati3
, [D] AS Dati4, [E] AS Dati5, [F] AS Dati6
, [G] AS Dati7, [H] AS Dati8
FROM dbo.foo
PIVOT (MAX(Dati) FOR Dati IN ([A], [B], [C], [D], [E], [F], [G], [H])) AS pvt
ORDER BY ID;
/* Output:
ID Dati1 Dati2 Dati3 Dati4 Dati5 Dati6 Dati7 Dati8
----------- ----- ----- ----- ----- ----- ----- ----- -----
1 A B NULL D E NULL NULL NULL
2 NULL B C D NULL NULL NULL NULL
4 A B NULL NULL NULL NULL NULL NULL
5 NULL NULL NULL NULL NULL F G H
(4 row(s) affected)
*/
DROP TABLE dbo.foo;
Se vuoi "shiftare" i dati eliminando le colonne NULL dovresti giocare di COALESCE()...
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org