1

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

1  A-123-B-456

我想要两行这样的数据

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

请帮忙转换成这种格式。

4

1 回答 1

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;

一个用于测试的 SQLfiddle

编辑:要进行连接并仅操作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;

另一个 SQLfiddle

于 2013-06-29T20:39:16.610 回答