#android #mysql #sql #android-room
Вопрос:
Использование библиотеки комнат Android для локального хранения. У меня есть ниже запрос от бэкенда, чтобы реализовать его в приложении для Android.
select DISTINCT timeStamp, batteryId, status
from (select batteryDetails.*,
lag(status) over (partition by batteryId order by timeStamp) as oldStatus
from batteryDetails) batteryDetails
where status is null
or oldStatus <> status
Выполнив вышеуказанный запрос, я получаю :
ошибка: на входе нет жизнеспособной альтернативы » (выберите batteryDetails.*, задержка(статус) («общедоступный абстрактный java.lang.Объект getHistoryEventsData(@org.jetbrains.аннотации.NotNull()
Так как мы не можем использовать оконные функции, используя комнату в Android, т. Е. Оконные функции, подобные тем, которые используются в приведенном выше запросе : (задержка и т.д.)
Я должен удалить его и должен упростить этот запрос. Пожалуйста, ведите. Спасибо.
Комментарии:
1. Пожалуйста, предоставьте примеры данных, желаемые результаты и четкое объяснение того, что вы хотите, чтобы запрос выполнялся.
Ответ №1:
Вы можете lag()
заменить соответствующим подзапросом:
select distinct timeStamp, batteryId, status
from (select bd.*,
(select bd2.status
from batteryDetails bd2
where bd2.batteryId = bd.batteryId
order by timeStamp
limit 1
) as oldStatus
from batteryDetails bd
) bd
where status is null or oldStatus <> status;