Вот мой текущий набор данных:Как повернуть второй столбец в TSQL
rname ename
Advises Grad_student
Advises Faculty
Chairs Department
Chairs Faculty
Я пытаюсь получить его в следующем формате:
rname ename1 ename2
advises grad_student faculty
chairs department faculty
Вот что я пытался до сих пор:
select distinct
r1.rname, r1.ENAME as ename1,r2.ENAME as ename2
from [dbo].[RELATIONSHIPS] r1
inner join(
select distinct
RNAME, ENAME
from [dbo].[RELATIONSHIPS]) r2
on r1.RNAME = r2.RNAME
where r1.ENAME <> r2.ENAME
order by r1.rname
Вот что я получаю обратно:
rname ename1 ename2
Advises Grad_student Faculty
Advises Faculty Grad_student
Chairs Department Faculty
Chairs Faculty Department
Как бы я исправить свой код, чтобы получить только 1 строку назад?
Хорошо, что решает эту проблему, не видел КТР раньше. Благодаря! – user2146212
@ user2146212 - np, ctes являются 'common-table-expressions' - несколько похожими на временные представления. Ключом к решению является использование 'row_number()' для создания группировки. – sgeddes