Интересно, есть ли канонический способ преобразования данных из длинного в широкий формат в SQLite (эта операция обычно выполняется в области реляционных баз данных?). Я пытался следовать за this example для MySQL, но я думаю, что SQLite не имеет такой же конструкции IF ... Спасибо!SQLite длинный до широкого формата?
11
A
ответ
12
IF
является нестандартным расширением MySQL. Лучше всегда использовать CASE
, который является стандартным SQL и работает во всех совместимых базах данных, включая SQLite и MySQL (и MSSQL, Oracle, Postgres, Access, Sybase ... и далее и далее).
Вот пример того, как сделать такой же запрос с CASE
:
SELECT Country,
MAX(CASE WHEN Key = 'President' THEN Value ELSE NULL END) President,
MAX(CASE WHEN Key = 'Currency' THEN Value ELSE NULL END) Currency
FROM Long
GROUP BY Country
ORDER BY Country;
Вот еще один способ представить тот же запрос с использованием соединения. Я думаю, что это, вероятно, более эффективно, но предполагает, что в каждой группе есть только одна запись для каждого значения ключа (версия CASE
тоже делает это, но не приведет к дополнительным строкам, если это не так, только результаты, которые меньше, чем предсказуемы).
SELECT
D.Country,
P.Value President,
C.Value Currency
FROM
(
SELECT DISTINCT Country
FROM Long
) D
INNER JOIN
( SELECT Country, Value
FROM Long
WHERE Key = 'President'
) P
ON
D.Country = P.Country
INNER JOIN
( SELECT Country, Value
FROM Long
WHERE Key = 'Currency'
) C
ON
D.Country = C.Country
ORDER BY
D.Country;
И для записи, вот DDL и данные тестирования я использовал:
CREATE TABLE Long (ID INTEGER PRIMARY KEY AUTOINCREMENT, Country TEXT, Key TEXT, Value TEXT);
INSERT INTO Long VALUES (NULL, 'USA', 'President', 'Obama');
INSERT INTO Long VALUES (NULL, 'USA', 'Currency', 'Dollar');
INSERT INTO Long VALUES (NULL, 'China', 'President', 'Hu');
INSERT INTO Long VALUES (NULL, 'China', 'Currency', 'Yuan');
Смежные вопросы
- 1. Изменить формат столбцов с тремя столбцами на матрицу («длинный» до «широкого» формата)
- 2. Pandas длинный до широкого без потери осведомленности о часовом поясе
- 3. Реорганизация комплекса данных в Stata, длинный до широкого
- 4. Преобразование многоуровневых моделей затяжек от широкого до длинного формата
- 5. Перестройка данных длиной до широкого формата в R
- 6. Как отличать данные от длинного до широкого формата в H2O?
- 7. ANOVA с использованием широкого формата таблицы данных
- 8. Как разбить диапазон на мелкие детали и преобразовать его из широкого формата в длинный?
- 9. Как расплавить/сфотографировать двухфакторный многомерный DataFrame из широкого формата в длинный?
- 10. Reshape2: data.frame от длинного до широкого
- 11. R: из широкого списка тегов в длинный список соединений
- 12. Как изменить данные, где значения сгруппированных строк становятся столбцами? (длинный до широкого?)
- 13. Протяните другие divs до ширины самого широкого
- 14. Перестройка от широкого до длинного в R
- 15. Переформатирование данных от длинного до широкого
- 16. Python pandas pivot от длинного до широкого
- 17. Данные реформата от длинного до широкого
- 18. R. Обработка дат и широкого формата из импортированного файла Stata
- 19. Обработка данных.файла от «широкого» до «длинного» формата для построения сред и стандартных ошибок
- 20. Как я могу эффективно развернуть таблицу с репликациями в MATLAB от высокого до широкого формата?
- 21. Преобразование R Dataframe с длиной до широкого формата и конкатенации строки значения
- 22. От формата даты до Excel
- 23. Преобразование данных из широкого формата в длинном формате в SQL
- 24. переформатировании (перестройки) таблицы данных с длиной до широкого использования MySQL
- 25. R изменить данные от длинного до широкого и наоборот
- 26. изменения формата даты в SQLITE
- 27. SQLite - выбор набора lat, длинный от таблицы
- 28. Преобразование IPv6 в длинный и длинный до IPv6
- 29. Переформатирование данных от длинного до широкого: проблема с агрегацией
- 30. Измените данные.фам от длинного до широкого по временному ряду
Очень полезно !! Спасибо. Мне нужно больше времени, чтобы проверить второй пример, но это действительно расширяет мои знания SQL! – hatmatrix