GOOGLE ADS

пятница, 15 апреля 2022 г.

Объединение нескольких строк данных в одну (время начала и окончания)

В настоящее время я получаю уведомления о том, когда устройство включено, а другое, когда устройство выключено. В настоящее время они отображаются в отдельных строках, однако я хотел бы объединить разовую запись каждого экземпляра в одну строку.

Данные вводятся, как показано ниже:

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

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...