使用递归 CTE 的 SQLite 转置

SQLite transpose using recursive CTE

鉴于此输入数据:

SEQ_ID SP_ID MASK STRING G_ID DEPTH PRESSURE
97 52361796 1 1 1 5.37 1941.0
97 52361796 1 1 2 5.77 1986.0
97 52361796 1 1 3 6.65 1922.0
....
97 52361800 1 1 1 5.76 1926.0
97 52361800 1 1 2 5.39 1922.0
97 52361800 1 1 3 6.85 2092.0

如何像这样转置它:

SP_ID MASK P_01 ... P_027 D_01 D_027
52321798 2 0 ... 2084.0 ... 0 ... 2084.0 ...
52361796 1 1941.0 ... 0 ... 5.37 ... 0 ...
52361800 1 1926.0 ... 0 ... 5.76 ... 0 ...

到目前为止在输出之上创建的代码:

    CREATE TEMP VIEW IF NOT EXISTS vInteractive AS 
    SELECT 
        SP_ID 
        , MASK 
        , SUM(CASE WHEN G_ID=1 THEN PRESSURE END) AS P_01 
        , SUM(CASE WHEN G_ID=27 THEN PRESSURE END) AS P_27 
        , SUM(CASE WHEN G_ID=1 THEN DEPTH END) AS D_01 
        , SUM(CASE WHEN G_ID=27 THEN DEPTH END) AS D_27 
    FROM vGun 
    GROUP BY SP_ID 
    ORDER BY SP_ID 
    ;

我想知道我是否可以使用递归 CTE 做一些更聪明的事情,而不是这种编码 n 行的蛮力方法。

假设我知道 G_ID 的最大值来限制递归。

一个CTE有固定的列数,所以这是不可能的。