Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Inkonsistente Transponierung

Sie könnten einen gemeinsamen Tabellenausdruck verwenden, um jedem Käufer eine Bestellung innerhalb des Lieferanten zu geben, und dann einfach einen regulären Fall ausführen, um sie in Spalten zu stecken;

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;

Ein SQLfiddle zum Testen .