Member 13746151 Ответов: 1

Выберите отдельный идентификатор с максимальной датой в соответствии с отделом


У меня есть такая таблица, как следующая

RevNo | RevContent          | PIC      | Created
-------------------------------------------------------
 00   | Testing Purpose     | Smith   | 2008-01-11
 01   | Testing Purpose     | Windsor | 2008-02-01
 02   | Test                | Thorn   | 2008-01-05
 02   | Testing             | Baker   | 2008-03-01
 03   | Testing only        | Sykes   | 2008-01-20


Мне нужен вывод, как показано ниже, он отображает последнюю дату для каждого номера rev и другие детали

RevNo | RevContent          | PIC      | Created
----------------------------------------------------
 00   | Testing Purpose     | Windsor | 2008-02-01
 01   | Testing             | Baker   | 2008-03-01
 02   | Testing only        | Sykes   | 2008-01-20


Но когда я запускаю sql, он отображает значение только с последней датой, как показано ниже, я хочу, чтобы он отображал последнюю дату для каждого rev no. и он основан на отделе(сеансе).

RevNo | RevContent          | PIC      | Created
----------------------------------------------------
 01   | Testing             | Baker   | 2008-03-01


Что я уже пробовал:

SELECT CCSMASTERLISTREVNO, CCSREVCONTENT, CCSPREPAREDREV, CCSREVEFFECTIVEDATE
FROM CCS2_TBL_MASTERLIST a 
WHERE CCSEQUIPMENTDPMT = :DPMT AND CCSREVEFFECTIVEDATE = (SELECT MAX(CCSREVEFFECTIVEDATE) FROM CCS2_TBL_MASTERLIST GROUP BY CCSMASTERLISTREVNO HAVING CCSMASTERLISTREVNO =a.CCSMASTERLISTREVNO) 
ORDER BY CCSMASTERLISTREVNO DESC

1 Ответов

Рейтинг:
8

Maciej Los

Это должно быть что-то вроде этого:

SELECT A.RevNo, A.RevContent, A.PIC, A.Created
FROM YourTable A INNER JOIN (
    SELECT RevNo, MAX(Created) AS Created
    FROM YourTable
    GROUP BY RevNo) AS B ON A.RevNo = B.RevNo AND A.Created = B.Created


Для получения более подробной информации, пожалуйста, смотрите: Визуальное представление SQL-соединений[^]