転置ではこれを達成できません。むしろ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');
あなたが得る
PERSON SENIOR MID JUNIOR
--------------- -------------------- -------------------- --------------------
CARL JAVA PHP VB.NET
GARY C#
GARY VB.NET
RALPH JAVASCRIPT RUBY
RALPH PHP
5 rows selected.