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

Pivoting tabulky v SQL (tj. křížová tabulka / křížová tabulka)

Bill Karwin to zmiňuje, ale myslím si, že si to zaslouží, abychom na to velmi jasně poukázali:

SQL nedělá to, co požadujete, takže jakékoli „řešení“, které dostanete, bude jen změť.

Pokud víte , určitě to vždy poběží na Oracle 10, pak jistě, křížová tabulka Waltera Mittyho by to mohla udělat. Správný způsob, jak to udělat, je pracovat s nejsnazší kombinací pořadí řazení v dotazu a kódu aplikace, abyste to správně rozložili.

  • Funguje na jiných databázových systémech,
  • Neriskuje to žádné další vrstvy, které by mohly selhat (pamatuji si, že MySQL mělo například problém s>255 sloupci. Jste si jisti, že knihovnu rozhraní? zvládá stejně dobře jako db samotná?)
  • to (obvykle) není o tolik těžší.

Pokud potřebujete, stačí požádat o Content_Row_ID nejprve se zeptejte na libovolné řádky, které potřebujete, seřazené podle CampaignID , ContentRowID , což by vám poskytlo každou (vyplněnou) buňku v pořadí zleva doprava, řádek po řádku.

Ps.

Existuje spousta věcí, o kterých si moderní člověk myslí, že by SQL měl mít/dělat, ale prostě tam nejsou. Toto je jeden, generované rozsahy jsou další, rekurzivní uzávěr, parametrický ORDER BY , standardizovaný programovací jazyk... seznam pokračuje. (ačkoli, pravda, existuje trik pro ORDER BY )



  1. Nelze se připojit k localhost, ale lze s názvem počítače v SQL Server 2008

  2. Příklady UTC_TIMESTAMP() – MySQL

  3. Spark Dataframes UPSERT to Postgres Table

  4. EM12c nyní umožňuje DB12c pro úložiště