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

Hvordan transformerer man vertikale data til horisontale data med SQL?

Uanset hvilken database du bruger, kaldes konceptet for, hvad du forsøger at opnå, "pivottabel".

Her er et eksempel på mysql:http://en.wikibooks.org/wiki/MySQL/Pivot_table

Nogle databaser har indbyggede funktioner til det, se linkene nedenfor.

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

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

Du kan altid lave en pivot i hånden. Du skal blot vælge alle sammenlægningerne i et resultatsæt og derefter vælge fra det resultatsæt. Bemærk, i dit tilfælde kan du sætte alle navnene i én kolonne ved hjælp af concat (jeg tror, ​​det er group_concat i mysql), da du ikke kan vide, hvor mange navne der er relateret til et a rel_id.

pseudo-select til dit tilfælde (jeg kender ikke mysql):

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


  1. Forholdet mellem katalog, skema, bruger og databaseinstans

  2. Slet række, hvis der findes en tabel SQL

  3. Tilslutning af AnySQL Maestro til Salesforce.com

  4. mysql ændrer unik nøgle til primær (mariadb)