Как написать запрос с условием по последнему статусу из другой таблицы?

Задание:

Написать 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


Ответы (0 шт):