Mysql
 sql >> Database >  >> RDS >> Mysql

Come trasformare i dati verticali in dati orizzontali con SQL?

Indipendentemente dal database che stai utilizzando, il concetto di ciò che stai cercando di ottenere è chiamato "Tabella pivot".

Ecco un esempio per mysql:http://en.wikibooks.org/wiki/MySQL/Pivot_table

Alcuni database hanno funzionalità integrate per questo, vedere i collegamenti seguenti.

SQLServer:http://msdn.microsoft.com/de-de/library /ms177410.aspx

Oracle:http://www.dba-oracle.com/t_pivot_examples.htm

Puoi sempre creare un pivot a mano. Basta selezionare tutte le aggregazioni in un set di risultati e quindi selezionare da quel set di risultati. Nota, nel tuo caso, puoi mettere tutti i nomi in una colonna usando concat (penso che sia group_concat in mysql), dal momento che non puoi sapere quanti nomi sono correlati a un rel_id.

pseudo-seleziona per il tuo caso (non conosco mysql):

select rel_id, group_concat(name) from item group by rel_id