Установка значения логических столбцов в зависимости от наличия значения в наборе - PullRequest
1 голос
/ 06 мая 2019

У меня есть таблица SQL в формате (INTEGER, json_array (INTEGER)).

Мне нужно вернуть результаты из таблицы, имеющей два логических столбца.Один устанавливается в true, если 1 появляется в json_array, а другой true, если два появляется в массиве.Очевидно, что взаимного исключения нет.

Например, если бы данные были такими:

-------------------------------
| ID       |   VALUES         |
-------------------------------
|  12      |  [1, 4, 6, 11]   |
_______________________________
|  74      |  [0, 1, 2, 5]    |
-------------------------------

Я бы надеялся вернуться:

-------------------------------
| ID       |   HAS1  |  HAS2  |
-------------------------------
|  12      |  true   | false  |
_______________________________
|  74      |  true   | true   | 
-------------------------------

Мне удалосьизвлечь данные json из столбца значений с помощью json_each, но я не уверен, что делать дальше.

1 Ответ

1 голос
/ 06 мая 2019

Если я правильно помню, агрегатная функция SQLite max поддерживает логическое значение, поэтому вы можете просто группировать по вашим данным:

select
    t1.id,
    max(case json_each.value when 1 then true else false end) as has1,
    max(case json_each.value when 2 then true else false end) as has2
from
    yourtable t1,
    json_each(t1.values)
group by
    t1.id
...