Допустим, у меня есть эта таблица:Используя стержень в TSQL
Name Occupation
Samantha Doctor
Julia Actor
Maria Actor
Meera Singer
Ashely Professor
Ketty Professor
Christeen Professor
Jane Actor
Jenny Doctor
Priya Singer
Я хочу, чтобы этот вывод:
Doctor Professor Singer Actor
Jenny Ashley Meera Jane
Samantha Christeen Priya Julia
NULL Ketty NULL Maria
Я хочу, чтобы преобразовать оккупационные строки в столбцы, а затем перечислить имена, занятие. Я пытался с pivot
реляционным оператором, но первый аргумент, который мы передаем в pivot
, должен быть агрегатной функцией, поэтому я не уверен, что это лучший способ решить этот запрос. Это вопрос, что я работаю с использованием pivot
, но, конечно, как я использую max(name)
это просто возвращается одно имя:
select * from occupations
pivot (max(name) for occupation in ([doctor],[actor],[singer],[professor]))
as pvt
Это мой выход, используя приведенный выше запрос:
doctor actor singer professor
Samantha Maria Priya Ketty
Могу ли я использовать операционный оператор pivot
, чтобы решить эту проблему? Какие изменения я мог бы сделать?
вместо 'выбрать * из occupations' использовать' выберите * from (select *, row_number() over (раздел по порядку заполнения по (выберите null)) rn из занятий) o'. вы хотите присвоить row_number или что-то подобное, чтобы каждая строка отличалась. edit: если вы не хотите, чтобы номер строки отображался в конечном наборе результатов, просто выберите определенные столбцы. – ZLK