您可以PIVOT:
SELECT mobile,
rs_address_1 AS address_1_rs,
rs_address_2 AS address_2_rs,
rs_address_3 AS address_3_rs,
of_address_1 AS address_1_of,
of_address_2 AS address_2_of,
of_address_3 AS address_3_of,
pr_address_1 AS address_1_pr,
pr_address_2 AS address_2_pr,
pr_address_3 AS address_3_pr
FROM table_name
PIVOT (
MAX( address_1 ) AS address_1,
MAX( address_2 ) AS address_2,
MAX( address_3 ) AS address_3
FOR address_type IN (
'RS' AS rs,
'OF' AS "OF",
'PR' AS pr
)
)
其中,对于您的示例数据:
CREATE TABLE table_name ( MOBILE, ADDRESS_1, ADDRESS_2, ADDRESS_3, ADDRESS_TYPE ) AS
SELECT 12345, 'ABC', 'EFG', 'HUJ', 'RS' FROM DUAL UNION ALL
SELECT 12345, 'hjk', 'qqq', 'asd', 'OF' FROM DUAL UNION ALL
SELECT 12345, 'jkh', 'sss', 'qwe', 'PR' FROM DUAL;
输出:
MOBILE | ADDRESS_1_RS | ADDRESS_2_RS | ADDRESS_3_RS | ADDRESS_1_OF | ADDRESS_2_OF | ADDRESS_3_OF | ADDRESS_1_PR | ADDRESS_2_PR | ADDRESS_3_PR
-----: | :----------- | :----------- | :----------- | :----------- | :----------- | :----------- | :----------- | :----------- | :-----------
12345 | ABC | EFG | HUJ | hjk | qqq | asd | jkh | sss | qwe
db小提琴here