В настоящее время я получаю уведомления о том, когда устройство включено, а другое, когда устройство выключено. В настоящее время они отображаются в отдельных строках, однако я хотел бы объединить разовую запись каждого экземпляра в одну строку.
Данные вводятся, как показано ниже:
ObjectID On/OffID Msgtime
100 1 2022-04-15 10:01:00
1472 1 2022-04-15 10:04:00
100 0 2022-04-15 11:35:00
100 1 2022-04-15 12:00:00
1472 0 2022-04-15 15:00:00
Я хотел бы, чтобы он отображался, как показано ниже:
ObjectID OnTime OffTime
100 2022-04-15 10:01:00 2022-04-15 11:35:00
1472 2022-04-15 10:04:00 2022-04-15 15:00:00
100 2022-04-15 12:00:00 -
Решение проблемы
Возможно, группа по запросу, как показано ниже, в столбце row_number
см. ссылку на скрипку
select objectID,
min(msgTime) as OnTime,
case
when min(MsgTime) <>max(MsgTime)
then max(MsgTime) else NULL
end as OffTime
from
(
select *,
row_number() over (partition by ObjectID order by MsgTime asc)+1 as r
from T
)T
group by objectID, r/2
order by Objectid, r/2
Комментариев нет:
Отправить комментарий