Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Trasporre i valori di una colonna in più record in un unico record con...
lunedì 01 giugno 2009 - 15.38
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
shakermaker
Profilo
| Newbie
5
messaggi | Data Invio:
lun 1 giu 2009 - 15:38
Salve, ho questa tabella:
SESSION UID_KEY1 UID_KEY2 UID_KEY_FINAL
123 1 1 10
123 1 2 20
123 1 3 30
123 1 4 40
123 2 1 50
123 2 2 60
123 2 3 70
123 2 4 80
345 1 1 90
345 1 2 110
345 1 3 120
345 1 4 130
Dovrei trasporre la colonna UID_KEY_FINAL in 4 colonne UID_KEY_FINAL1, UID_KEY_FINAL2, UID_KEY_FINAL3, UID_KEY_FINAL4 che riportano il valore di UID_KEY_FINAL secondo il valore assunto da UID_KEY2 (che va da 1 a 4) raggruppati per SESSION e UID_KEY1. Esempio:
SESSION UID_KEY1 UID_KEY_FINAL1 UID_KEY_FINAL2 UID_KEY_FINAL3 UID_KEY_FINAL4
123 1 10 20 30 40
123 2 50 60 70 80
345 1 90 110 120 130
Come costruire la query SQL?
Grazie
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
lun 1 giu 2009 - 19:36
>Come costruire la query SQL?
Ciao Cinzia,
Che DBMS e versione utilizzi?
>Grazie
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
antoniox
Profilo
| Newbie
1
messaggi | Data Invio:
mar 2 giu 2009 - 15:16
Mi "aggancio" a questo thread perchè ho una esigenza similare a quella di Cinzia (DBMS: Access 2003).
campi Tabella\Query:
ID_UTENTE ; TUTORE ; DATA_NASCITA_TUTORE
Record di esempio:
119A ; Mario Rossi ; 01/01/1930
119A ; Luisa Bianchi ; 02/02/1950
200B ; Tizio Caio ; 03/03/1960
Vorrei riportare i record come segue:
119A ; Mario Rossi ; 01/01/1930 ; Luisa Bianchi ; 02/02/1950
200B ; Tizio Caio ; 03/03/1960
Aggiungo che il raggruppamento avviene unicamente in riferimento all'ID_UTENTE e che il numero massimo di TUTORI per ciascun ID_UTENTE è 3.
Grazie!
Antonio
shakermaker
Profilo
| Newbie
5
messaggi | Data Invio:
mer 3 giu 2009 - 10:18
Uso SQL Server 2005.
Ho provato una soluzione usando
ROW_NUMBER() OVER(PARTITION BY...
quindi ho una prima selezione per ogni 4 campi... ma vorrei controllare di più la cosa in base al campo UID_KEY2, che non è detto ci siano sempre 4 record per i valori 1,2,3,4. Magari ci sono solo i valori 2 e 3 e io devo inserire correttamente tali valori nelle colonne UID_KEY_FINAL2 e UID_KEY_FINAL3.
shakermaker
Profilo
| Newbie
5
messaggi | Data Invio:
mer 3 giu 2009 - 12:33
Pubblico la soluzione a me congeniale:
SELECT
[session], [UID_KEY_1],
, MAX(CASE WHEN UID_KEY_2 =1 THEN UID_KEY_FINAL ELSE NULL END) AS UID_KEY_FINAL1
, MAX(CASE WHEN UID_KEY_2 =2 THEN UID_KEY_FINAL ELSE NULL END) AS UID_KEY_FINAL2
, MAX(CASE WHEN UID_KEY_2 =3 THEN UID_KEY_FINAL ELSE NULL END) AS UID_KEY_FINAL3
, MAX(CASE WHEN UID_KEY_2 =4 THEN UID_KEY_FINAL ELSE NULL END) AS UID_KEY_FINAL4
FROM T_OPE_HIS_RWA_PLN
--WHERE bla bla bla
GROUP BY session,[UID_KEY_1]
Alla fine era relativamente semplice....
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !