SQL - взять столбец, разбить его на новые столбцы - PullRequest
0 голосов
/ 23 июня 2018

Пример таблицы:

  ID    CB        CB2   CB3   CB4    CB5
  ----  --------  ----  ----  ----  ----
  1     亀 龜 龜
  2     竜 龒 

Примечание. Каждый символ разделен пробелом.Примечание. Число символов в CB варьируется.

Я хотел бы переместить каждый символ в столбце CB (после первого) в отдельный отдельный столбец, чтобы в каждом столбце находилось не более одного символа.,

Пример:

  ID    CB    CB2   CB3   CB4    CB5
  ----  ----  ----  ----  ----  ----
  1      亀    龜    龜
  2      竜    龒

Примечание. Для имен новых столбцов не требуется формат, указанный в примере.

(SQLite)

1 Ответ

0 голосов
/ 23 июня 2018

В SQLite вы можете сделать это с помощью рекурсивного CTE.Следующие символы получают:

with recursive cte as (
      select id, substr(cb, 1, instr(cb, ' ') - 1) as chr,
             substr(cb, instr(cb, ' ') + 1) as rest, 1 as lev
      from t
      union all
      select id, substr(rest, 1, instr(rest || ' ', ' ') - 1) as chr,
             substr(rest, instr(rest || ' ', ' ') + 1) as rest, lev + 1 as lev
      from cte
      where rest <> ''
     )
select *
from cte;

Вы можете повернуть их.,,для фиксированного числа столбцов:

select id,
       max(case when lev = 1 then chr end) as chr_1,
       max(case when lev = 2 then chr end) as chr_2,
       max(case when lev = 3 then chr end) as chr_3
from cte
group by id;

Вот БД Fiddle .

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