Запрос на выборку, который уже есть:
SELECT H.ID HEADID, H.DATECREATE, H.DATELOAD, H.DATEACCEPT,
O.ID ID, O.CATELCODE, O.CATELNAME FROM FORMHEADERS H
JOIN ORGANIZATIONS O ON O.ID = ID_ORGANIZATION
WHERE H.PERIOD = :PERIOD
Структура таблиц правда уже изменилась:
1. Organizations (была раньше Org):
ID bigint
CatElCode varchar(255)
CatElName varchar(255)
2. FormHeaders (была раньше Headers):
ID bigint
ID_ORGANIZATION bigint (FK на ORGANIZATIONS)
ID_REPORT bigint (FK на еще одну таблицу)
PERIOD date
FIN integer (раньше был Val)
DATECREATE date
DATELOAD date
DATEACCEPT date
Проблема остается та же. Выбрать нужные значения из FormHeaders и Organizations по заданному параметру PERIOD так, чтобы при возникновении одинаковых записей с разными значениями FIN отбиралась только первая (или последняя). В остальном все также.
По поводу GROUP BY: как я понимаю для использования этого оператора нужно в полях с одинаковыми значениями указывать агрегатные функции. А какие можно использовать в моем случае?