sql >> Databasteknik >  >> RDS >> Oracle

Inkonsekvent Transponering

Du kan använda ett vanligt tabelluttryck för att ge varje köpare en beställning inom leverantören, och sedan bara göra ett vanligt fall för att placera dem i kolumner;

WITH cte AS (
  SELECT supplier, buyer, 
    ROW_NUMBER() OVER (PARTITION BY supplier ORDER BY buyer) rn
  FROM Table1
)
SELECT supplier, 
       MAX(CASE WHEN rn=1 THEN buyer END) buyer1,
       MAX(CASE WHEN rn=2 THEN buyer END) buyer2,
       MAX(CASE WHEN rn=3 THEN buyer END) buyer3
FROM cte
GROUP BY supplier;

En SQLfiddle att testa med .



  1. PHP MYSQL Blog Archive Menu per år och månad

  2. SQLite Subquery

  3. Att hämta slumpmässiga data från en MySQL-databas men inte upprepa data

  4. Längsta prefixmatchning