在Oracle中拆分成两行

时间:2013-06-29 20:16:16

标签: sql oracle oracle10g

我有一个表格,其中有两列ID和NAME,其中NAME格式为A-123-B-456。 A与数字和B与数字的组合将是唯一的。

1  A-123-B-456

我想要这两个数据的两行,如

1  A-123-B-456
2  B-456-A-123.

请帮助转换为此格式。

1 个答案:

答案 0 :(得分:1)

据我了解,这是您需要的视图,它会在两行中保持相同的ID;

CREATE VIEW Table1View AS
  SELECT id, name FROM Table1
  UNION
  SELECT id, 
    SUBSTR(name, INSTR(name, '-', 1, 2) +1) || '-' || 
    SUBSTR(name, 1, INSTR(name, '-', 1, 2) -1) name FROM Table1;

An SQLfiddle to test with

编辑:要进行联接并只需操作name并保留其余部分,您可以使用CTE执行原始查询并在其上执行UNION;

CREATE VIEW Table1View AS
  WITH cte AS (                -- your original join goes here
    SELECT Table1.id, Table1.name, Table2.extra 
    FROM Table1
    JOIN Table2
      ON Table1.id = Table2.id
  )
  SELECT id, name, extra FROM cte
  UNION
  SELECT id, 
    SUBSTR(name, INSTR(name, '-', 1, 2) +1) || '-' || 
    SUBSTR(name, 1, INSTR(name, '-', 1, 2) -1) name, extra 
  FROM cte;

Another SQLfiddle

相关问题