Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Trasporre un insieme di righe come colonne in SQL Server 2000

L'esempio su http://jdixon.dotnetdevelopersjournal.com/pivot_table_data_in_sql_server_2000_and_2005.htm funziona solo se si conosce in anticipo quali possono essere i valori delle righe. Ad esempio, supponiamo che tu abbia un'entità con attributi personalizzati e che gli attributi personalizzati siano implementati come righe in una tabella figlio, dove la tabella figlio è fondamentalmente coppie variabile/valore e quelle coppie variabile/valore sono configurabili.

color red
size  big
city  Chicago

Descriverò una tecnica che funziona. L'ho usato. NON lo sto promuovendo, ma funziona.

Per ruotare i dati in cui non sai quali possono essere i valori in anticipo, crea una tabella temporanea al volo senza colonne. Quindi usa un cursore per scorrere le tue righe, emettendo una "tabella altera" costruita dinamicamente per ogni variabile, in modo che alla fine la tua tabella temporanea abbia le colonne, il colore, la dimensione, la città.

Quindi inserisci una riga nella tua tabella temporanea, la aggiorni tramite un altro cursore attraverso la variabile, le coppie di valori, quindi la selezioni, di solito unita alla sua entità padre, in effetti facendo sembrare che quelle coppie variabili/valore personalizzate fossero come built- nelle colonne nell'entità padre originale.