0
Учитывая это входные данные:SQLite транспонирования с помощью рекурсивной КТР
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
;
Мне было интересно, если вместо этого подхода грубой силы кодирования n числа строк, я могу сделать что-то умнее с рекурсивным CTE.
Это то, что я знаю максимум G_ID, чтобы наложить кепку на рекурсию.