За съжаление това, което се опитвате да направите, не е възможно, поне не в "правия" SQL - ще ви е необходим динамичен SQL или двуетапен процес (в първата стъпка генериране на низ, който е нов SQL израз). Сложно.
Проблемът е, че не включвате фиксиран списък с имена на градове (като низови литерали). Опитвате се да създадете колони въз основа на всичко, от което получавате (изберете град от служителите). По този начин броят на колоните и името на колоните не са известни, докато двигателят на Oracle не прочете данните от таблицата, но преди двигателят да започне, той вече трябва да знае какви ще бъдат всички колони. Противоречие.
Имайте предвид също, че ако това беше възможно, почти сигурно бихте искали (изберете различи град от служители).
ДОБАВЕНО:ОП задава последващ въпрос в коментар (вижте по-долу).
Идеалното подреждане е градовете да са в собствена, по-малка таблица, а "градът" в таблицата на служителите да има ограничение за външен ключ, така че "градът" да е управляем. Не искате един служител по човешки ресурси да влезе в Ню Йорк, друг да влезе в Ню Йорк и трети да влезе в Ню Йорк за същия град. По един или друг начин първо опитайте кода си, като замените подзаявката, която следва оператора IN в основната клауза с просто разделен със запетая списък с низови литерали за градовете:... IN ('DFW', 'CH', „Ню Йорк“). Имайте предвид, че редът, в който ги поставите в този списък, ще бъде реда на колоните в изхода. Не проверих цялата заявка, за да видя дали има други проблеми; опитайте това и ни уведомете какво се случва.
Успех!