Я использую sqlite db с iphone.
У меня есть chartdatatable
, как показано ниже.
deviceTypeHash - это хеш для устройства, которое может иметь 2 или 3 SeriesNameHash.

Основная таблица для DevicTypeHash взята из таблицы DeviceParamUnit
, как показано ниже

Как вы увидите, DeviceTypeHash - представляет устройство - является общим для первых трех записей, и у них есть 3 различных SeriesNameHash, которые соответствуют Systolic, Diastolic и PulseRate в таблице DeviceParamUnit. Они похожи на параметры первого устройства, которое является монитором BP. (что верно, кровяное давление имеет три значения - систолическое, диа ...)
Аналогичным образом, следующее устройство - это температурная палочка, и оно имеет 11 параметров, представленных 11 уникальными именами серий.
Мне требуется, чтобы при предоставлении запроса с DeviceNameHash он показывал мне values
(столбец присутствует в chartdatatable) для соответствующего SeriesNameHash (параметры). Но это должно показать его разворот.
Вот что я пытался получить в центре.
SELECT time
, MAX(CASE WHEN SeriesNameHash = -7656137604397428413 THEN value ELSE 0 END) as '-7656137604397428413'
, MAX(CASE WHEN SeriesNameHash = 1538157359584988292 THEN value ELSE 0 END) as '1538157359584988292'
, MAX(CASE WHEN SeriesNameHash = 6366213907772730014 THEN value ELSE 0 END) as '6366213907772730014'
, MAX(CASE WHEN SeriesNameHash = -5604390693208903701 THEN value ELSE 0 END) as '-5604390693208903701'
, MAX(CASE WHEN SeriesNameHash = -5604390693208899606 THEN value ELSE 0 END) as '-5604390693208899606'
, MAX(CASE WHEN SeriesNameHash = -5604390693208928275 THEN value ELSE 0 END) as '-5604390693208928275'
, MAX(CASE WHEN SeriesNameHash = -5604390693208924180 THEN value ELSE 0 END) as '-5604390693208924180'
, MAX(CASE WHEN SeriesNameHash = -5604390693208920081 THEN value ELSE 0 END) as '-5604390693208920081'
, MAX(CASE WHEN SeriesNameHash = -5604390693208915986 THEN value ELSE 0 END) as '-5604390693208915986'
, MAX(CASE WHEN SeriesNameHash = -5604390693208944655 THEN value ELSE 0 END) as '-5604390693208944655'
, MAX(CASE WHEN SeriesNameHash = -5604390693208940560 THEN value ELSE 0 END) as '-5604390693208940560'
, MAX(CASE WHEN SeriesNameHash = -5604390693208936461 THEN value ELSE 0 END) as '-5604390693208936461'
, MAX(CASE WHEN SeriesNameHash = -5604390693208932366 THEN value ELSE 0 END) as '-5604390693208932366'
, MAX(CASE WHEN SeriesNameHash = 4940014074620696541 THEN value ELSE 0 END) as '4940014074620696541'
, MAX(CASE WHEN SeriesNameHash = 4940014074620704732 THEN value ELSE 0 END) as '4940014074620704732'
FROM chartdatatable
GROUP BY time
с результатом.

(Я знаю, что мог бы назвать столбцы «систолическим», «диастолическим» ... но это не относится к делу.
Теперь проблема заключается в том, как динамически отображать только эти столбцы (каждый столбец имеет SeriesNameHash), когда в запросе указывается только DeviceTypeHash.
E.g. Если бы мне нужно было просмотреть все значения (по времени) монитора B.P, его seriesHashName будет выглядеть примерно так
SELECT seriesname, seriesnamehash FROM 'DeviceParamUnitTable' where DeviceTypeHash = 6814980142680378626
Systolic -7656137604397428413
Diastolic 1538157359584988292
Pulse Rate 6366213907772730014
Как изменить родительский запрос, чтобы получать только первые три столбца сводного результата, когда он предоставляется DeviceTypeHash монитора BP, и получать, скажем, столбец 4-14, если он предоставляется DeviceTypeHash, скажем, TemperatureWand. В настоящее время он показывает все значения параметров и бесполезен, когда мне требуется отфильтрованный свод, сделанный выше.
Подводя итог, я сделал сводку, но как мне теперь получить конкретные столбцы
когда предоставляется значением, которому сопоставлены имена столбцов.
Если это невозможно по запросу, просмотрите любой другой подход. Любая помощь будет оценена.