sql >> Database >  >> RDS >> Mysql

Een rij transponeren in kolommen met MySQL zonder UNIONS te gebruiken?

Ik heb dit uit het boek The Art of SQL , pagina's 284-286:

Laten we zeggen dat uw tafelnaam foo is .

Maak eerst een tabel met de naam pivot :

CREATE Table pivot (
  count int
);

Voeg in die tabellen zoveel rijen in als er kolommen zijn die u wilt draaien in foo . Aangezien je drie kolommen hebt in foo die u wilt draaien, maakt u drie rijen in de draaitabel:

insert into pivot values (1);
insert into pivot values (2);
insert into pivot values (3);

Doe nu een cartesiaanse join tussen foo en pivot , met een CASE om de juiste kolom te selecteren op basis van het aantal:

SELECT foo.id, Case pivot.count
  When 1 Then cat
  When 2 Then one_above
  When 3 Then top_level
End Case
FROM foo JOIN pivot;

Dit zou je moeten geven wat je wilt.




  1. Een primaire sleutel voor automatische verhoging toevoegen aan een bestaande tabel in Oracle

  2. Converteer hex naar binair in MySQL

  3. Microsoft Access 2010, 2013, 2016 en 2019 zelfstudie

  4. dplyr left_join met kleiner dan, groter dan voorwaarde