2012-07-24 70 views

risposta

7

Di solito, è perché il layout funziona meglio in un report o nell'interfaccia utente dopo la rotazione.

I dati su un database normalizzato possono generare dati nella "forma" di più record, in cui l'interfaccia utente desidera visualizzare tali record come campi. La normalizzazione dei dati è ottima, ma quando si tratta di rappresentare i dati in un formato conciso e naturale, è spesso necessario fare un pivot.

example here.

Concesso, l'esempio che ho collegato è Excel, non un vero DB, ma le immagini descrivono un esempio di dove i dati ruotati sembrano più naturali e il concetto è lo stesso.

+0

Grazie! Osservando questo esempio, posso vedere un possibile uso del pivoting - Supponiamo di voler aggiungere 3 nuovi prodotti Prod G, Prod H, Prod I. Usando il modo pivotato (tabella GI) possiamo aggiungere nuovi prodotti semplicemente aumentando le righe invece di aumentare il numero di colonne. Pertanto, non è necessario aggiungere nuove colonne. Certo, questo richiede più memoria. Ma, mi chiedo chi vorrebbe usare il perno e perché? – Master

2

Che ne dite di questo come esempio?

How to PIVOT Data Using T-SQL

Un aspettativa comune in estrazione dei dati è la capacità di trasformare l'uscita di più righe in più colonne in una singola riga. Il server SQL Server 2005/2008 consente di eseguire questa operazione con l'operatore PIVOT in una query.

EDIT

Diciamo che avere una tabella che memorizza le vendite per cliente per data

Qualcosa di simile

Table 
- SaleDate 
- CustomerID 
- SaleAmount 

Usando PIVOT è possibile visualizzare una griglia che totalizza vendite per cliente per mese/trimestre/anno

|Client A|Client B|Client C 
-------------------------------- 
2007| 100 | 0  | 150 
2008| 0  | 200 | 160 
2009| 110 | 180 | 100 

Questo sarebbe puramente per scopi di sintesi.

+0

In effetti, questa è la definizione di pivoting. Perché qualcuno dovrebbe voler convertire le colonne in righe? Qual è lo scopo ? – Master

3

Per quanto riguarda la domanda "Perché qualcuno vorrebbe convertire colonne in righe (pivot), quale problema risolve?"

Non si tratta di "come i dati appaiono visivamente" ma piuttosto di "come deve essere organizzato e gestito". Vale a dire:

Nella maggior parte dei database, le righe rappresentano "Record - (entità, evento, ecc.)" E colonne "Campi (attributi di tale entità)". Ad esempio il sotto è una tipica rappresentazione DB dei dati;

Person  | Birth | Height | 
------------------------------- 
John  | 1980 | 1.82 | 
Smith  | 1987 | 2.02 | 

Ciò significa; ogni colonna rappresenta un particolare attributo di "persone" e quando si seleziona una particolare colonna, si ottiene quel particolare attributo di TUTTE le persone. In questo modo, una colonna è una "Dimensione" e tutti i valori hanno la stessa unità (tipo di dati), tutti sono date, tutte sono lunghezze, ecc.

Nella modellazione finanziaria, tuttavia, è molto più comodo rappresentare i dati al contrario. Ad esempio un tipico nella tabella "Cash Flow mensile" assomiglia a questo.

Item   | Jan | Feb | 
----------------------------- 
Sales  | $100 | $150 | 
Tax   | -$50 | -$15 | 

nota che questo tipo tabulazione in un foglio di calcolo non aderisce formati di database, di colonna sono il tempo, ma i valori nelle colonne sono valori monetari, il conflitto, non possiamo fare calcoli con questa colonne.

Se questa tabella Pivot, diventa

Date   | Sales | Tax | 
------------------------------ 
Jan   | $100 | -$50 | 
Feb   | $150 | -$15 | 

Ora, dimensioni della colonna (intestazione) e dei dati al loro interno sono coerenti. La colonna della data ha tutte le date e le altre hanno tutte le cifre $. Possiamo prendere una colonna e fare operazioni vettoriali con essa.

Questo è un problema risolvibile.

+0

"ogni riga rappresenta un particolare attributo di" persone "e quando si seleziona una particolare riga, si ottiene quel particolare attributo di TUTTE le persone" - Penso che in realtà si intendesse "ogni colonna" e "colonna di particolato" ... I si è preso la libertà di cambiare la formulazione. Altrimenti, un bell'esempio, anzi - grazie! –