With SUB_TABLE as (
SELECT
ID, FIRST_NAME, LAST_NAME,
MAX(CASE WHEN RN = 1 THEN ADDRESS ELSE NULL END) AS ADDRESS1,
MAX(CASE WHEN RN = 2 THEN ADDRESS ELSE NULL END) AS ADDRESS2,
MAX(CASE WHEN RN = 3 THEN ADDRESS ELSE NULL END) AS ADDRESS3,
MAX(CASE WHEN RN = 4 THEN ADDRESS ELSE NULL END) AS ADDRESS4,
MAX(CASE WHEN RN = 1 THEN PHONE_NO ELSE NULL END) AS PHONE1,
MAX(CASE WHEN RN = 2 THEN PHONE_NO ELSE NULL END) AS PHONE2,
MAX(CASE WHEN RN = 3 THEN PHONE_NO ELSE NULL END) AS PHONE3,
MAX(CASE WHEN RN = 4 THEN PHONE_NO ELSE NULL END) AS PHONE4,
MAX(CASE WHEN RN = 1 THEN CELL_NO ELSE NULL END) AS CELL1,
MAX(CASE WHEN RN = 2 THEN CELL_NO ELSE NULL END) AS CELL2,
MAX(CASE WHEN RN = 3 THEN CELL_NO ELSE NULL END) AS CELL3,
MAX(CASE WHEN RN = 4 THEN CELL_NO ELSE NULL END) AS CELL4
FROM
(
SELECT
ID, FIRST_NAME, LAST_NAME, ADDRESS, PHONE_NO, CELL_NO,
ROW_NUMBER() OVER(PARTITION BY ID ORDER BY ADDRESS DESC,PHONE_NO DESC,CELL_NO DESC) AS RN
FROM
YOUR_TABLE
) AS T
GROUP BY ID, FIRST_NAME, LAST_NAME
)
Select distinct (*)
from SUB_TABLE
|