Как написать запрос с условием по последнему статусу из другой таблицы?
Задание:
Написать SQL запрос получающий список всех программ, последний статус которых 'завершена'. Под последним статусом программы предполагается запись с наибольшим значением
id.Окончательный набор колонок должен быть: id программы, наименование предмета, дата статуса в формате 'ДД.ММ.ГГГГ'. Результат запроса должен быть отсортирован по дате статуса по убыванию
Структура таблиц (на dbfiddle):
CREATE TABLE PROGRAMMS (
PROGRAMMID NUMBER(10, 0) NOT NULL,
RECORDID NUMBER(10, 0) NOT NULL,
PERSONID NUMBER(10, 0),
OOP_PLACE VARCHAR2(2000 CHAR),
METHOD_SUPPORT VARCHAR2(2000 CHAR),
CURRENT_CONTROL_FOND VARCHAR2(1000 CHAR),
MEDIUM_CONTROL_FOND VARCHAR2(1000 CHAR),
DELETED NUMBER(1, 0) NOT NULL,
DEL_DATE DATE,
BRANCH NUMBER(4, 0) NOT NULL,
DISCID NUMBER(10, 0),
CREATE_DATE DATE,
CREATE_PERSONID NUMBER(10, 0),
MISSION_PROBLEM CLOB,
PRACTIC_TYPE NUMBER(1, 0),
PRACTIC_FORM NUMBER(1, 0),
PRACTIC_PLACE NUMBER(1, 0),
IS_VALID NUMBER(1, 0) DEFAULT 1 NOT NULL,
PRACTICE_REPORT_FORM VARCHAR2(2000 CHAR),
ADDITIONAL_QUESTION VARCHAR2(2000 CHAR),
MATERIAL_TEXT CLOB,
EDU_LINK VARCHAR2(100 CHAR),
CONSTRAINT PROGRAMMS PRIMARY KEY (PROGRAMMID) ENABLE
)
CREATE TABLE STATUS (
STATUSID NUMBER(10, 0) NOT NULL,
PROGRAMMID NUMBER(10, 0) NOT NULL,
STATUS_CODE NUMBER(1, 0) NOT NULL,
STATUS_DATE DATE NOT NULL,
USERNAME VARCHAR2(25 CHAR),
COMMENTARY VARCHAR2(1500 CHAR),
CONSTRAINT PK_WP_STATUS PRIMARY KEY (STATUSID) ENABLE
)
CREATE TABLE Guide (
CODE NUMBER(10, 0) NOT NULL,
NAME VARCHAR2(300 CHAR) NOT NULL,
ABBR VARCHAR2(30 CHAR),
DEPARTMENT NUMBER(10, 0),
DEFAULT_DIV_TYPE NUMBER(10, 0) DEFAULT 1,
DIV_PRACTICES NUMBER(1, 0) DEFAULT 0,
DIV_LABS NUMBER(1, 0) DEFAULT 0,
CORRECTNAME VARCHAR2(150 CHAR),
CONSTRAINT Guide PRIMARY KEY (CODE) ENABLE
)
Пробую таким запросом:
SELECT PROGRAMMID, NAME, STATUS_DATE
FROM (
SELECT
programmms.ID AS PROGRAMMID,
name.Name AS NAME,
status_date.Date AS STATUS_DATE,
status.ID AS STATUSID,
ROW_NUMBER() OVER (PARTITION BY programms.ID ORDER BY status_date DESC)AS rn1
FROM wp_programms
INNER JOIN status ON programms.ID=status.PROGRAMMID
INNER JOIN name ON programms.STATUSID=name.ID
) AS t1
WHERE rn=1
AND STATUS_CODE=1
ORDER BY STATUS_DATE DESC
Но получаю ошибку:
ORA-01747: invalid user.table.column, table.column, or column specification