У меня есть 4 таблицы в Postgres со следующей организациейфункция окна Postgres с тем, где пункт
reads:
id -- primary key
value -- integer
read_datetime -- datetime
patient_id -- integer
reader_id -- integer
readers:
id -- primary key
patient_readers:
id -- primary key
patient_id -- integer
reader_id -- integer
issuance_datetime -- datetime
unassignment_datetime -- datetime
issued_value -- integer
patients:
id -- integer
Я хочу, чтобы создать запрос, где я могу получить самую последнюю информацию о выдачи для конкретного чтения. До сих пор у меня есть следующий запрос
SELECT
value,
read_datetime,
issued_value,
issuance_datetime,
unassignment_datetime
FROM "reads"
INNER JOIN "readers" ON "readers"."id" = "reads"."reader_id"
INNER JOIN "patient_readers" ON "patient_readers"."reader_id" = "readers"."id" AND patient_readers.patient_id = reads.patient_id
INNER JOIN patientsON patients.id = reads.patient_id
ORDER BY reads.patient_id , read_datetime, issuance_datetime
Это производит вывод, где группа строк одинаковы для всей информации, кроме информации о выдаче (issuance_datetime, unassignment_datetime и issued_value), как я бы ожидать. Я хотел бы агрегировать информацию о выдачи в отношении к readers.id и patients.id, а потом я бы только как один набор информации выдачи, где
read_datetime > issuance_datetime AND (
(unassignment_datetime IS NOT NULL AND read_datetime < unassignment_datetime) OR
(NEXT(issuance_datetime) IS NOT NULL AND read_datetime < NEXT(issuance_datetime) OR
(NEXT(issuance_datetime) IS NULL)
Вот я, составляющие функцию NEXT() но в основном я хочу смотреть в одну строку по отношению к окну. Я также хочу сделать предложение WHERE в окне (или так кажется). Я только начал читать о функциях окна, поэтому многие из них для меня новы (и я не уверен, что функции окна - это то, что я хочу), поэтому я надеюсь, что это разрешится в Postgres.
Благодаря