我有一个表格,其中有两列ID和NAME,其中NAME格式为A-123-B-456。 A与数字和B与数字的组合将是唯一的。
1 A-123-B-456
我想要这两个数据的两行,如
1 A-123-B-456
2 B-456-A-123.
请帮助转换为此格式。
答案 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;
编辑:要进行联接并只需操作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;