Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment transformer des données verticales en données horizontales avec SQL ?

Quelle que soit la base de données que vous utilisez, le concept de ce que vous essayez de réaliser s'appelle "Tableau croisé dynamique".

Voici un exemple pour mysql :http://en.wikibooks.org/wiki/MySQL/Pivot_table

Certaines bases de données ont des fonctionnalités intégrées pour cela, voir les liens ci-dessous.

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

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

Vous pouvez toujours créer un pivot à la main. Sélectionnez simplement toutes les agrégations dans un ensemble de résultats, puis sélectionnez dans cet ensemble de résultats. Notez que dans votre cas, vous pouvez mettre tous les noms dans une colonne en utilisant concat (je pense que c'est group_concat dans mysql), car vous ne pouvez pas savoir combien de noms sont liés à un rel_id.

pseudo-select pour votre cas (je ne connais pas mysql):

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