Я пытаюсь получить ряд данных, содержащихся в таблице, которая в основном выглядит следующим образом:
row | timestamp | seriesId | int32 | int64 | double
---------------------------------------------------
0 | 0 | 0 | 2 | |
1 | 1 | 0 | 4 | |
2 | 1 | 1 | 435 | |
3 | 1 | 2 | | 2345 |
4 | 1 | 3 | | | 0.5
5 | 2 | 0 | 5 | |
6 | 2 | 1 | 453 | |
7 | 2 | 2 | | 2401 |
....
Я хотел бы получить набор результатов, который выглядит следующим образом (чтобы я мог легко построить его):
row | timestamp | series0 | series1 | series 2 | ...
----------------------------------------------------
0 | 0 | 2 | | |
1 | 1 | 4 | 435 | 2345 |
2 | 2 | 5 | 453 | 2401 |
...
Мои навыки SQL, к сожалению, не совсем такие, какими они должны быть, поэтому моя первая попытка достичь этого выглядит немного неловко:
SELECT tbl0.timestamp, tbl0.int32 as series0,
tbl1.int32 as series1
FROM
(SELECT * FROM StreamData WHERE seriesId=0) as tbl0
INNER JOIN
(SELECT * FROM StreamData WHERE seriesId=1) as tbl1
ON tbl0.timestamp = tbl1.timestamp
ORDER BY tbl0.timestamp;
Это, похоже, не совсем верный способ добиться этого, особенно если количество различных серий не увеличивается. Я могу изменить способ хранения данных в таблице (если это имеет значение) в базе данных SQLite, если это облегчит задачу, но, поскольку количество различных рядов может время от времени различаться, я бы предпочел иметь их все в та же таблица.
Есть ли лучший способ написать вышеуказанный запрос?