SQL Server 这个查询是什么?

d7v8vwbk  于 2022-11-21  发布在  其他
关注(0)|答案(2)|浏览(144)

我有一个包含3列idhomephmobileph的表。
如果homeph等于mobileph,那么homephmobileph与其他行的关系是什么查询呢?

eimct9ow

eimct9ow1#

这应该会给您带来所需的结果。

SELECT ID AS id, Homeph AS phone
FROM table

UNION

SELECT ID AS id, Contactph AS phone
FROM table
htrmnn0y

htrmnn0y2#

在Oracle中,您可以用途:

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;

两者输出:
| 识别码|电话号码|
| - -|- -|
| 一个|九九九九九九|
| 一个|小行星88888|
| 2个|小行星77777|
fiddle

相关问题