SQLite Forum

Unstack one column to multiple
Login
Here's a solution utilising the [pivot_vtab](https://github.com/jakethaw/pivot_vtab) extension:

```sql
--
-- Import data
--
.mode csv
CREATE TABLE import(val);
.import tmp.txt import

--
-- Create groups based on the 2 blank rows rule
--
ALTER TABLE import ADD COLUMN g INT;

UPDATE import
   SET g = oid
 WHERE oid = 1
    OR oid IN (SELECT i2.oid+1
                 FROM import i
                 JOIN import i2 ON i.oid = i2.oid-1
                               AND i2.val = ''
                WHERE i.val = '');

UPDATE import
   SET g = i2.g
  FROM import i2
  LEFT JOIN
       import i3 ON import.oid > i3.oid
                AND i2.oid < i3.oid
                AND i3.g IS NOT NULL
 WHERE import.g IS NULL
   AND import.oid > i2.oid
   AND i2.g IS NOT NULL
   AND i3.oid IS NULL;

--
-- Number the columns
--
ALTER TABLE import ADD COLUMN c INT;

UPDATE import
   SET c = x.c
  FROM (SELECT oid, Row_Number() OVER (PARTITION BY g ORDER BY oid) c
          FROM import) x 
 WHERE import.oid = x.oid;

--
-- Pivot
--
.load pivot_vtab
CREATE VIRTUAL TABLE pivot USING pivot_vtab(
  -- Pivot table row query
  (SELECT g
     FROM import
    GROUP BY g),

  -- Pivot table column definition query
  (SELECT c,
          'col' || c
     FROM import
    WHERE c <= (SELECT Max(c)-2 FROM import)
    GROUP BY c
    ORDER BY c),

  -- Pivot query
  (SELECT val
     FROM import 
    WHERE g = ?1
      AND c = ?2)
);

.mode column
SELECT *
  FROM pivot;
```

```bash
g   col1                                              col2     col3                  col4                      col5        col6  col7  col8  col9  col10  col11  col12  col13  col14  col15  col16
--  ------------------------------------------------  -------  --------------------  ------------------------  ----------  ----  ----  ----  ----  -----  -----  -----  -----  -----  -----  -----
1   Hardside Cabin Luggage Trolley Black              senator  View Product Details  N18602991A	KH132-20_BLK	  KH13220BLK  02    Days  04    Hrs   25     Mins   25     Sec    1      1      0
19  Hardside 4 Wheels Cabin Luggage Trolley Burgundy  senator  View Product Details  N42588980A	KH134-20_BGN	  KH13420BGN  02    Days  04    Hrs   25     Mins   25     Sec    1      1      0
37  Softside Cabin Luggage Trolley Purple             senator  View Product Details  N32139616A	LL051-20_PRP	  LL05120PRP  02    Days  09    Hrs   25     Mins   25     Sec    1      1      0
```