2013-12-06 1 views
0
Source Table: EMP_LOCATION 

NAME LOCATION 
------------------------------- 
SMITH  NY;CA;IL;GA 
JAMES  MO;AZ;RI 
FORD  NJ 
SCOTT  TX;VA;WA;NH 
MARTIN MD;CT 

Required Output: 

NAME LOCATION 
------------------- 
FORD  NJ 
JAMES  AZ 
JAMES  MO 
JAMES  RI 
MARTIN CT 
MARTIN MD 
SCOTT  NH 
SCOTT  TX 
SCOTT  VA 
SCOTT  WA 
SMITH  CA 
SMITH  GA 
SMITH  IL 
SMITH  NY 
+1

вы что-то пробовали? – tbone

+0

Это непростая задача. для стартера. –

+0

Да, на самом деле я написал в sql server db. – Nabin

ответ

1

Некоторые люди попросят вас показать какой-то код, но когда мне это нужно, я потратил много времени на создание функции, тогда я понял, что могу сделать это с помощью connect by. Так что вам нужно это:

SELECT name, REGEXP_SUBSTR (location, '[^;]+', 1, LEVEL) AS location 
    FROM emp_location 
CONNECT BY 
    LEVEL <= LENGTH(REGEXP_REPLACE (location, '[^;]*')) + 1 
    GROUP BY name, REGEXP_SUBSTR (location, '[^;]+', 1, LEVEL) 
    ORDER BY name 
+0

Спасибо, что ваш код работал отлично. – Nabin

+0

Не забыл принять ответ, если он вам подходит :) –

+0

Да, конечно, это моя обязанность сделать это. снова спасибо – Nabin

 Смежные вопросы

  • Нет связанных вопросов^_^