sql >> Databáze >  >> RDS >> Oracle

Nekonzistentní transpozice

Můžete použít běžný tabulkový výraz, abyste každému kupujícímu dali objednávku v rámci dodavatele a pak jednoduše provedli běžný případ, abyste je umístili do sloupců;

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;

Otestujte SQLfiddle .



  1. Jaká je cena omezení CHECK v Postgres 9.x?

  2. Minimalizace dopadu rozšíření sloupce IDENTITY – část 4

  3. Mapování PostgreSQL textu[][] typu a typu Java

  4. Více indexů vs jeden index na více sloupcích v postgresql