2013-06-29 5 views
1

NAME 형식이 A-123-B-456 인 두 개의 열 ID와 NAME이있는 테이블이 있습니다. A와 숫자의 조합과 B와 숫자의 조합은 고유합니다.오라클의 두 행으로 분할

1 A-123-B-456 

나는이 형식으로 변환 할 수

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

도와주세요 등이 하나 개의 데이터의 두 행을 원한다.

+0

로 변환 ...? 테이블의 내용을 업데이트 하시겠습니까? 그렇다면 위의 예에서 ID가 2 인 잠재적으로 기존 행에 어떤 현상이 발생합니까? 또한 숫자는 항상 3 자리입니까? –

+0

변환 할 View를 생성해야합니다. 숫자도 4 자리 수 있지만 구분 기호는 항상있을 수 있습니다. –

+0

... 기존 ID 1은 1 & 2가 될 것입니다. 기존 ID 2는 무엇이 될 것입니까? 3 & 4? –

답변

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.

EDIT : 조인을하고 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.

+0

감사합니다 Joachim ..하지만 내 조회 쿼리 선택 T1.name, Table2에서 T2.style 같은 내게 작동하지 않습니다. T1 조인 Table2 T1.col1 T2 = T2.col2 여기서 T1 .col1은 'T %'와 (과) 비슷합니다. 이것이 뒤 틀릴 수 있는지 알려주십시오. –

+1

@RaghavTandon 질문에 원하는 데이터/원하는 결과를 추가해 주시겠습니까? 귀하의 질문은 두 개의 테이블, 전망 또는 다른 분야에 대해서는 아무것도 말하지 않습니다. –

+0

당신이 그것을 이해하지만, 만약 내가 내 쿼리 쿼리를 누른 다음 여러 테이블에서 여러 개의 조인이 포함되어있는 레코드를 가져올 필요가있다. 이것에 대한 기본 테이블은 T로 시작하는 레코드를 얻고 각 레코드에 대해 T-123-B-456과 같은 두 개의 행을 가져와야 할 때 T-123-B-456 및 B-456을 표시해야하는 Table1입니다. -T-123 다른 컬럼들과 함께. –

관련 문제