Dividir valores em partes com sqlite

Estou lutando para converter

a | a1,a2,a3
b | b1,b3
c | c2,c1

para:

a | a1
a | a2
a | a3
b | b1
b | b2
c | c2
c | c1

Aqui estão os dados no formato sql:

CREATE TABLE data(
  "one"  TEXT,
  "many" TEXT
);
INSERT INTO "data" VALUES('a','a1,a2,a3');
INSERT INTO "data" VALUES('b','b1,b3');
INSERT INTO "data" VALUES('c','c2,c1');

A solução é provavelmente a expressão de tabela comum recursiva.



Aqui está um exemplo que faz algo semelhante a uma única linha:

WITH RECURSIVE list( element, remainder ) AS (
    SELECT NULL AS element, '1,2,3,4,5' AS remainder
        UNION ALL
    SELECT
        CASE
            WHEN INSTR( remainder, ',' )>0 THEN
                SUBSTR( remainder, 0, INSTR( remainder, ',' ) )
            ELSE
                remainder
        END AS element,
        CASE
            WHEN INSTR( remainder, ',' )>0 THEN
                SUBSTR( remainder, INSTR( remainder, ',' )+1 )
            ELSE
                NULL
        END AS remainder
    FROM list
    WHERE remainder IS NOT NULL
)
SELECT * FROM list;

(originalmente desta postagem do blog:https://blog.expensify.com/2015/09/25/the-simplest-sqlite-common-table-expression-tutorial)

Produz:

element | remainder
-------------------
NULL    | 1,2,3,4,5
1       | 2,3,4,5
2       | 3,4,5
3       | 4,5
4       | 5
5       | NULL

o problema é, portanto, aplicar isso a cada linha de uma tabela.

questionAnswers(1)

yourAnswerToTheQuestion