SQL запрос для Group By как внутренний запрос - PullRequest
0 голосов
/ 05 марта 2020

У меня есть таблица, как показано ниже

TestDetails

Submitted_on                      Subject    Submitted_By
3/4/2020 7:45:26 PM               English       Shyam
3/4/2020 9:45:26 PM               English       Rahul
3/5/2020 9:45:26 PM               Arabic        Rahul
3/4/2020 8:45:26 PM               French        Yash
3/4/2020 7:45:26 PM               Spanish       John
3/4/2020 6:45:26 PM               Spanish       John

Я хочу выбрать самую последнюю заявку для каждого предмета из таблицы выше. Вывод должен быть:

 Submitted_on                     Subject    Submitted_By
3/4/2020 9:45:26 PM               English       Rahul
3/5/2020 9:45:26 PM               Arabic        Rahul
3/4/2020 8:45:26 PM               French        Yash
3/4/2020 7:45:26 PM               Spanish       John

Я пробовал, как показано ниже, но получаю вывод как

 Submitted_on                    Subject    Submitted_By
3/4/2020 7:45:26 PM               English       Shyam
3/4/2020 9:45:26 PM               English       Rahul
3/5/2020 9:45:26 PM               Arabic        Rahul
3/4/2020 8:45:26 PM               French        Yash
3/4/2020 7:45:26 PM               Spanish       John


SELECT MAX(Submitted_on),Subject,Submitted_By FROM TestDetails GROUP BY Subject,Submitted_By

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

Найдите приведенный ниже запрос

;WITH CTE AS
(
    SELECT ROW_NUMBER() OVER (PARTITION BY subject ORDER BY subject DESC) duplicates, * 
    FROM TestDetails
)
SELECT submitted_on, subject, submitted_by FROM CTE WHERE duplicates = 1
0 голосов
/ 05 марта 2020

Использовать фильтрацию. Вот один из методов:

select td.*
from testdetails td
where td.Submitted_on = (select max(td2.Submitted_on)
                         from testdetails td2
                         where td2.subject = td.subject
                        );

Для повышения производительности при работе с большими наборами данных требуется индекс testdetails(subject, submitted_on).

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...