SQL Server: выберите последний результат из группы

Я пытаюсь получить последний результат из 2 похожих результатов (самый старый результат)

FromUser | ToUser | Message | Date User1 | User2 | hi | 01/01/2013 20:00 User1 | User2 | hi later| 01/01/2013 21:00 User5 | User2 | hi | 01/01/2013 20:01 User5 | User2 | hi later| 01/01/2013 21:01 SELECT CM.FromUser, CM.ToUser, CM.Message, CM.Date, U.UserId, U.UserFullName, U.UserName, U.UserPhoto FROM ConversationMessages AS CM INNER JOIN Users AS U ON U.UserName = CM.FromUser WHERE CM.ToUser = @user ORDER BY CM.Date DESC 

он должен перечислить пользователя 5 hi позже сначала, затем user1 hi later second (user5 является более новым по дате). только последняя строка в основном сгруппирована по FromUser затем упорядочена по дате. Я бесполезен в sql, попробовал много предложений здесь и не получил на работу

Вы хотите использовать для этого функции окна, а не group by :

 select FromUser, ToUser, Message, [Date], UserId, UserFullName, UserName, UserPhoto from (SELECT CM.FromUser, CM.ToUser, CM.Message, CM.Date, U.UserId, U.UserFullName, U.UserName, U.UserPhoto, row_number() over (partition by CM.FromUser, CM.ToUser order by [Date] desc) as seqnum FROM ConversationMessages CM INNER JOIN Users U ON U.UserName = CM.FromUser WHERE CM.ToUser = @user ) s WHERE seqnum = 1 ORDER BY CM.Date DESC ; 

Это стандартный SQL, который вы ищете:

 SELECT * FROM ConversationMessages cm1 LEFT JOIN ConversationMessages cm2 ON cm1.fromUser = cm2.fromUser AND cm1.date < cm2.date WHERE cm2.date IS NULL AND cm1.toUser = 'User2' ORDER BY cm1.date DESC 

Он должен работать в любой СУБД. Конечно, убедитесь, что вы заменили User2 на соответствующую переменную SQL Server.

Вывод:

 FromUser |  ToUser |  Сообщение |  Дата
 User5 |  Пользователь2 |  привет позже |  01/01/2013 21:01
 User1 |  Пользователь2 |  привет позже |  01/01/2012 21:00

Заклинай здесь .

Interesting Posts

Выберите только, где все строки для «клиента» имеют одинаковый статус?

Подключение к SQL Server на другом порту в SSRS

Как выполнять итерацию по таблицам в схеме с помощью Dynamic Sql

SSRS 2008 – Как скрыть значок «плюс» в ячейке переключения группы

Может ли администратор базы данных найти проблемы с производительностью только после чтения кода TSQL?

Перевод запроса с SQL на EF Lambda expressions

разница в двух таблицах без ключевого столбца

Заменить функцию в SQL Server 2014 добавляет конечные нули в поле Char

Разделение столбца электронной почты на три столбца на сервере Sql

Преобразование всех дочерних тегов в одну колонку с несколькими разделителями -SQL-сервер (2)

Является ли мой код отсоединения правильным?

Вызвать хранимый файл в TSQL

SQL Duplicates Issue SQL SERVER 2000

SQL-запрос для вычисления части продолжительности посещения из таблицы журналов

T-SQL pivot с более чем одним столбцом без сводной таблицы

Давайте будем гением компьютера.