SELECT DISTINCT id, phone
FROM input_table
UNPIVOT (
phone FOR type IN (homeph, contactph)
)
但是,在解透视之前检查电话号码是否相同会更有效(因为UNPIVOT在默认情况下将忽略NULL值):
SELECT id, phone
FROM (
SELECT id,
homeph,
CASE WHEN homeph = contactph THEN NULL ELSE contactph END AS contactph
FROM input_table
)
UNPIVOT (
phone FOR type IN (homeph, contactph)
)
其中,对于示例数据:
CREATE TABLE input_table (id, homeph, contactph ) AS
SELECT 1, 99999, 88888 FROM DUAL UNION ALL
SELECT 2, 77777, 77777 FROM DUAL;
2条答案
按热度按时间eimct9ow1#
这应该会给您带来所需的结果。
htrmnn0y2#
在Oracle中,您可以用途:
但是,在解透视之前检查电话号码是否相同会更有效(因为
UNPIVOT
在默认情况下将忽略NULL
值):其中,对于示例数据:
两者输出:
| 识别码|电话号码|
| - -|- -|
| 一个|九九九九九九|
| 一个|小行星88888|
| 2个|小行星77777|
fiddle