Queries |
2.29 Query a campi incrociati per la trasposizione righe-colonne |
Roberto |
Un modo poco complesso per effettuare la trasposizione tra righe e colonne di una tabella è quello di usare una query a campi incrociati che usi come tabella derivata una query unione che serializza i dati della tabella. Ipotizziamo di avere una tabella chiamata Tabella1 che abbia la seguente struttura: Data Data/ora e chiave primaria Gb Numerico Gr Numerico Ht Numerico B Numerico L Numerico M Numerico N Numerico T Numerico ed il seguente contenuto: Data Gb Gr Ht B L M N T ----------------------------------------------------------- 1/9/2005 5 7 4 1 1 2 7 5 2/9/2005 4 4 5 5 5 4 5 5 3/9/2005 4 1 2 3 5 6 7 8 4/9/2005 5 8 7 6 4 3 2 1Se si vuole stampare un report che invece riporta i dati impaginati come segue: 1/9/2005 2/9/2005 3/9/2005 4/9/2005 --------------------------------------------------------------- Gb 5 4 4 5 Gr 7 4 1 8 Ht 4 5 2 7 B 1 5 3 6 L 1 5 5 4 M 2 4 6 3 N 7 5 7 2 T 5 6 8 1come origine record del report usare una query a campi incrociati che abbia il seguente codice SQL: TRANSFORM Sum(Pippo.MioValore) AS [Il valore] SELECT Pippo.Riga FROM [SELECT Tabella1.Data, "Gb" AS Riga, Tabella1.Gb AS MioValore FROM Tabella1 UNION SELECT Tabella1.Data, "Gr" AS Riga, Tabella1.Gr AS MioValore FROM Tabella1 UNION SELECT Tabella1.Data, "Ht" AS Riga, Tabella1.Ht AS MioValore FROM Tabella1 UNION SELECT Tabella1.Data, "B" AS Riga, Tabella1.B AS MioValore FROM Tabella1 UNION SELECT Tabella1.Data, "L" AS Riga, Tabella1.L AS MioValore FROM Tabella1 UNION SELECT Tabella1.Data, "M" AS Riga, Tabella1.M AS MioValore FROM Tabella1 UNION SELECT Tabella1.Data, "N" AS Riga, Tabella1.N AS MioValore FROM Tabella1 UNION SELECT Tabella1.Data, "T" AS Riga, Tabella1.T AS MioValore FROM Tabella1;]. AS Pippo GROUP BY Pippo.Riga PIVOT Format([Data],"Short Date"); Download: |