Как организовать данные с определенными метками в новые столбцы? - PullRequest
0 голосов
/ 29 мая 2018

Таблица выглядит как

----------------------------
|Date         |label |data |
----------------------------
|"2018-01-01" |"A"   |1.01 |
----------------------------
|"2018-01-02" |"A"   |1.02 |
----------------------------
|"2018-01-01" |"B"   |2.01 |
----------------------------
|"2018-01-02" |"B"   |2.02 |
----------------------------
|"2018-01-01" |"C"   |3.01 |
----------------------------
|"2018-01-02" |"C"   |3.02 |
----------------------------
|"2018-01-01" |"D"   |4.01 |
----------------------------
|"2018-01-02" |"D"   |4.02 |
----------------------------

Я хотел бы выбрать данные в следующем формате:

---------------------------------------
|Date         |"A"  |"B"  |"C"  |"D"  |
---------------------------------------
|"2018-01-01" |1.01 |2.01 |3.01 |4.01 |
---------------------------------------
|"2018-01-02" |1.02 |2.02 |3.02 |4.02 |
---------------------------------------

В моей базе данных есть тысячи меток, поэтому я ищудля метода автоматической организации данных временных рядов по меткам, а затем использования меток в качестве имен столбцов.

1 Ответ

0 голосов
/ 29 мая 2018

SQLite не поддерживает pivot (что мне особенно не нравится в любом случае), поэтому используйте условное агрегирование:

select date,
       max(case when label = 'a' then data end) as a,
       max(case when label = 'b' then data end) as b,
       max(case when label = 'c' then data end) as c,
       max(case when label = 'd' then data end) as d
from t
group by date;

К сожалению, запросы SQL имеют фиксированный набор столбцов.Итак, если у вас есть переменное количество тегов, вам нужно использовать динамический SQL для генерации оператора.То есть вам нужно будет построить запрос как строку и затем выполнить его.

Кроме того, базы данных имеют максимальное ограничение на количество столбцов в таблице и набор результатов.Я думаю, что в SQLite ограничение по умолчанию составляет 2000 столбцов.Это ограничивает количество значений, которые вы можете иметь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...