Oracle
 sql >> база данни >  >> RDS >> Oracle

Трябва да подредите имената на служителите според техния град в колоната

За съжаление това, което се опитвате да направите, не е възможно, поне не в "правия" SQL - ще ви е необходим динамичен SQL или двуетапен процес (в първата стъпка генериране на низ, който е нов SQL израз). Сложно.

Проблемът е, че не включвате фиксиран списък с имена на градове (като низови литерали). Опитвате се да създадете колони въз основа на всичко, от което получавате (изберете град от служителите). По този начин броят на колоните и името на колоните не са известни, докато двигателят на Oracle не прочете данните от таблицата, но преди двигателят да започне, той вече трябва да знае какви ще бъдат всички колони. Противоречие.

Имайте предвид също, че ако това беше възможно, почти сигурно бихте искали (изберете различи град от служители).

ДОБАВЕНО:ОП задава последващ въпрос в коментар (вижте по-долу).

Идеалното подреждане е градовете да са в собствена, по-малка таблица, а "градът" в таблицата на служителите да има ограничение за външен ключ, така че "градът" да е управляем. Не искате един служител по човешки ресурси да влезе в Ню Йорк, друг да влезе в Ню Йорк и трети да влезе в Ню Йорк за същия град. По един или друг начин първо опитайте кода си, като замените подзаявката, която следва оператора IN в основната клауза с просто разделен със запетая списък с низови литерали за градовете:... IN ('DFW', 'CH', „Ню Йорк“). Имайте предвид, че редът, в който ги поставите в този списък, ще бъде реда на колоните в изхода. Не проверих цялата заявка, за да видя дали има други проблеми; опитайте това и ни уведомете какво се случва.

Успех!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Търсете, ако числото се съдържа в израз като:1-3,5,10-15,20

  2. Помощна програма:Генерирайте PL/SQL процедура за експортиране на данни от таблица за 2 минути

  3. Как ефективно да конвертирате текст в число в Oracle PL/SQL с NLS_NUMERIC_CHARACTERS, които не са по подразбиране?

  4. SQL, при каскада за изтриване и при каскада за актуализиране

  5. ORA-01653:не може да се разшири таблицата в пространството за таблици ORA-06512