Я пытаюсь объединить результаты нескольких таблиц в одну.Идея состоит в том, чтобы отображать данные для многострочного графика в пользовательском интерфейсе.Результатом будет что-то вроде [дата / время] |давление |поток |потребление Каждый из 3 столбцов (давление, расход, потребление) взят из разных таблиц, но у них будет одинаковое поле даты и времени - поскольку мы хотим отобразить эти точки за это время.
Я подумал, что возможнообъединение всех могло бы помочь объединить результаты, но это, похоже, мало что дает.Я вижу в Интернете, чтобы использовать сводку?но я не уверен, что это сработает в этом случае.
Например, я делаю следующее.Один из вариантов - включить все ожидаемые строки результатов (все 3 типа) в каждое предложение, чтобы мы могли как-то «сквошить» их вместе на основе «datelabel» и оставить ноль, если он не существует в течение этого часа.
select deviceid, min(flowrate),
to_char(recorded, 'Mon-dd hh:00 pm') as datelabel
from analytic.pressureflow p
WHERE (deviceid = 162300) and flowtype = 'MIN'
AND recorded >= '9/16/2019 11:24:00 AM'
AND recorded < '9/24/2019 11:24:00 AM'
group by deviceid, datelabel
), --select * from min_flow
max_flow as (
select deviceid, MAX(flowrate),
to_char(recorded, 'Mon-dd hh:00 pm') as datelabel
from analytic.pressureflow p
WHERE (deviceid = 162300) and flowtype = 'MAX'
AND recorded >= '9/16/2019 11:24:00 AM'
AND recorded < '9/24/2019 11:24:00 AM'
group by deviceid, datelabel
), -- select * from max_flow
flow_temp as (
select deviceid, avg(flowtemp) as flowtemp,
null as tempvalue,
to_char(recorded, 'Mon-dd hh:00 pm') as datelabel
from twflowtemperature
WHERE (deviceid = 162300)
AND recorded >= '9/16/2019 11:24:00 AM'
AND recorded < '9/18/2019 11:24:00 AM'
group by deviceid, datelabel
), -- select * from flow_temp
device_temp as (
select
deviceid,
tempvalue,
timestamp as recorded
from twdevicetemp
WHERE (deviceid = 162300)
AND timestamp >= '9/16/2019 11:24:00 AM'
AND timestamp < '9/18/2019 11:24:00 AM'
), -- select * from ambient_temp
ambient_temp as (
select
deviceid,
avg(tempvalue) as tempvalue,
null as flowtemp,
to_char(recorded, 'Mon-dd hh:00 pm') as datelabel
from device_temp
group by deviceid, datelabel
)
select * from ambient_temp
union all
select * from flow_temp
Основной вопрос: возможно ли объединить строки на основе идентификатора (в данном случае строки даты и времени)?
Headers: datetime | pressure | flow | consumption
9/27 1PM 1.5 null 200
9/27 2PM | 2 10 50
9/27 3pm | null null null
ETC ETC.
Спасибо всемзаранее.