Bạn không thể đạt được điều này với chuyển vị. thay vào đó hãy thử sử dụng natural full outer join
WITH T
AS (SELECT
P.*,
ROW_NUMBER ( )
OVER (PARTITION BY PERSON, LEVELS ORDER BY LANGUAGE)
R
FROM
PROGRAMMER P)
SELECT
PERSON,
SENIOR,
MID,
JUNIOR
FROM
(SELECT
PERSON,
R,
LANGUAGE SENIOR
FROM
T
WHERE
LEVELS = 'SENIOR')
NATURAL FULL OUTER JOIN (SELECT
PERSON,
R,
LANGUAGE MID
FROM
T
WHERE
LEVELS = 'MID')
NATURAL FULL OUTER JOIN (SELECT
PERSON,
R,
LANGUAGE JUNIOR
FROM
T
WHERE
LEVELS = 'JUNIOR');
Bạn nhận được
PERSON SENIOR MID JUNIOR
--------------- -------------------- -------------------- --------------------
CARL JAVA PHP VB.NET
GARY C#
GARY VB.NET
RALPH JAVASCRIPT RUBY
RALPH PHP
5 rows selected.