разделение строки на несколько столбцов в SQL-запросе - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть таблица с именемstist, содержащая 31 столбец

emi_id work1 sal1 work2 sal2      work3 sal3   work4 sal4 .....work15 sal15
100    wiring 1000  carpentry  2000 painting 3000......

Я хочу отобразить как

100  wiring     1000
100  corpentry  2000
100  painting   3000
.
.
.
.
100 business    5000

Как я могу добиться этого в oracle sql query

попытался подключиться, но это не разрешено в моей рабочей среде

1 Ответ

1 голос
/ 19 сентября 2019

Использование UNPIVOT для пар столбцов:

Установка Oracle :

CREATE TABLE table_name ( emi_id, work1, sal1, work2, sal2, work3, sal3, work4, sal4, work15, sal15 ) AS
SELECT 100, 'wiring', 1000, 'carpentry', 2000, 'painting', 3000, 'xyz', 4000, 'business', 15000 FROM DUAL

Запрос :

SELECT *
FROM   table_name
UNPIVOT ( ( work, sal ) FOR key IN (
  ( work1,  sal1  ) AS  1,
  ( work2,  sal2  ) AS  2,
  ( work3,  sal3  ) AS  3,
  ( work4,  sal4  ) AS  4,
  -- ...
  ( work15, sal15 ) AS 15
) )

Выход :

EMI_ID | KEY | WORK      |   SAL
-----: | --: | :-------- | ----:
   100 |   1 | wiring    |  1000
   100 |   2 | carpentry |  2000
   100 |   3 | painting  |  3000
   100 |   4 | xyz       |  4000
   100 |  15 | business  | 15000

дБ <> скрипка здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...