Mi scuso per aver presentato un'altra domanda su questo argomento, ma ho letto molte delle risposte e non riesco a farlo funzionare correttamente.SQL Server 2008 Dati verticali su orizzontale
Ho tre tabelle che ho bisogno di unire e tirare informazioni su. Una delle tabelle è a sole 3 colonne e memorizza i dati verticalmente. Vorrei trasporre quei dati in un formato orizzontale.
I dati sarà simile a questo se ho appena unisco e tiro:
SELECT
a.app_id,
b.field_id,
c.field_name,
b.field_value
FROM table1 a
JOIN table2 b ON a.app_id = b.app_id
JOIN table3 c ON b.field_id = c.field_id --(table3 is a lookup table for field names)
Risultato:
app_id | field_id | field_name | field_value
-----------------------------------------------------
1234 | 101 | First Name | Joe
1234 | 102 | Last Name | Smith
1234 | 105 | DOB | 10/15/72
1234 | 107 | Mailing Addr | PO BOX 1234
1234 | 110 | Zip | 12345
1239 | 101 | First Name | Bob
1239 | 102 | Last Name | Johnson
1239 | 105 | DOB | 12/01/78
1239 | 107 | Mailing Addr | 1234 N Star Ave
1239 | 110 | Zip | 12456
Invece, mi piacerebbe assomigliare a questo:
app_id | First Name | Last Name | DOB | Mailing Addr | Zip
--------------------------------------------------------------------------
1234 | Joe | Smith | 10/15/72 | PO BOX 1234 | 12345
1239 | Bob | Johnson | 12/01/78 | 1234 N Star Ave | 12456
In passato, mi sono limitato a cercare tutti i field_id di cui avevo bisogno nei miei dati e ho creato le dichiarazioni CASE per ognuno di essi. L'app utilizzata dagli utenti contiene dati per più prodotti e ogni prodotto contiene campi diversi. Considerando il numero di prodotti supportati e il numero di campi per ciascun prodotto (molti, molti di più rispetto all'esempio di base che ho mostrato sopra) ci vuole molto tempo per cercarli e scrivere enormi blocchi di istruzioni CASE.
Mi chiedevo se ci fosse un codice cheat là fuori per ottenere ciò di cui ho bisogno senza dover cercare le field_ids e scrivere le cose. So che la funzione PIVOT è probabilmente quello che sto cercando, tuttavia, non riesco a farlo funzionare correttamente.
Pensa che potreste dare una mano?
Questo è esattamente quello che mi serviva.Non ho il rappresentante per revocarti, ma se qualcun altro qui fuori lo vede, per favore proteggi per me! –