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

Potřeba uspořádat jména zaměstnanců podle jejich sloupce města

Bohužel to, o co se snažíte, není možné, alespoň ne v "přímém" SQL - potřebovali byste dynamické SQL, nebo dvoukrokový proces (v prvním kroku vygenerování řetězce, což je nový SQL příkaz). Složité.

Problém je v tom, že nezahrnujete pevný seznam názvů měst (jako řetězcové literály). Pokoušíte se vytvořit sloupce na základě čehokoli, co získáte (vyberte město ze zaměstnanců). Počet sloupců a název sloupců tedy není znám, dokud engine Oracle nenačte data z tabulky, ale před spuštěním motoru už musí vědět, jaké všechny sloupce budou. Rozpor.

Všimněte si také, že pokud by to bylo možné, téměř jistě byste to chtěli (vyberte odlišné město od zaměstnanců).

DOPLNĚNO:OP položí doplňující otázku v komentáři (viz níže).

Ideální uspořádání je, aby města byla ve své vlastní menší tabulce a „město“ v tabulce zaměstnanců mělo omezení cizího klíče, takže věc „města“ je zvládnutelná. Nechcete, aby jeden HR úředník vstoupil do New Yorku, další do New Yorku a třetí do NYC za stejné město. Ať tak či onak, nejprve vyzkoušejte svůj kód nahrazením dílčího dotazu, který následuje za operátorem IN v klauzuli pivot, jednoduše seznamem řetězcových literálů pro města oddělených čárkami:... IN ('DFW', 'CH', 'NY'). Všimněte si, že pořadí, ve kterém je vložíte do tohoto seznamu, bude pořadí sloupců ve výstupu. Nekontroloval jsem celý dotaz, abych zjistil, zda nejsou nějaké další problémy; zkuste to a dejte nám vědět, co se stane.

Hodně štěstí!



  1. Optimální způsob zřetězení/agregace řetězců

  2. Zvýraznění přístupů ve fulltextovém vyhledávání

  3. Jak mohou automatické aktualizace statistik ovlivnit výkon dotazů

  4. Používání tabulek JavaFX k organizaci dat