sql >> Databasteknik >  >> RDS >> Oracle

Pivotera en tabell i SQL (d.v.s. korstabulering/korstabulering)

Bill Karwin nämner detta, men jag tycker att detta förtjänar att påpekas mycket tydligt:

SQL gör inte det du efterfrågar, så alla "lösningar" du får kommer att vara en lump.

Om du vet , visst, det kommer alltid att köras på en Oracle 10, så visst kan Walter Mittys korstabell göra det. Det rätta sättet att göra det är att arbeta den enklaste kombinationen av sorteringsordning i frågan och applikationskoden för att lägga upp det rätt.

  • Det fungerar på andra databassystem,
  • det riskerar inte att några andra lager tappas ut (jag minns att MySQL till exempel hade problem med>255 kolumner. Är du säker på att du gränssnittsbibliotek klarar såväl som själva db?)
  • det är (oftast) inte så mycket svårare.

Om du behöver kan du bara be om Content_Row_ID s först, fråga sedan efter de rader du behöver, sorterade efter CampaignID , ContentRowID , vilket skulle ge dig varje (befolkad) cell i ordning från vänster till höger, rad för rad.

Ps.

Det finns en massa saker som den moderna människan tycker att SQL borde ha/göra som bara inte finns där. Detta är ett, genererade intervall är ett annat, rekursiv stängning, parametrisk ORDER BY , standardiserat programmeringsspråk... listan fortsätter. (även om det visserligen finns ett knep för ORDER BY )



  1. Hur hittar man den största tabellen i MySQL-databasen?

  2. Funktioner med variabelt antal ingångsparametrar

  3. Hur använder jag Postgres JSONB datatype med JPA?

  4. Matcha utbud med efterfrågan – lösningar, del 3