Intereting Posts
Выполнение команды COPY в удаленной базе данных с использованием локального файла Атрибут столбца, не распознанный в инструкции WHERE SQL Query, чтобы показать пробелы между несколькими диапазонами дат Переменные имена таблиц или столбцов Выберите данные из «show tables» MySQL query Получить последний ребенок на одного родителя из большой таблицы – запрос слишком медленный SQL JOIN: существует ли разница между USING, ON или WHERE? Как получить количество людей по возрастным группам с использованием SQL-запроса в базе данных Oracle? Код VBA для циклического и обновления столбца базы данных MS Access из Excel список, разделенный запятыми, в результате выражения select в Oracle Более 4000 символов дают строковый литерал слишком длинной ошибки при оракуле Временная метка покрытия для второго Найдите максимальные последовательные годы для каждого идентификатора в таблице (Oracle SQL) Как проверить, существует ли строка в таблице SQLite с условием Как выбрать связанную группу элементов в Oracle SQL

Как выбрать топ-запись той же группы?

Теперь я с MS SQL Server 2008. Хотелось бы узнать, можно ли выбрать топ-запись той же группы. У меня есть 3 поля в моей таблице. Вот моя таблица

ID GroupNo FieldOfInterest 0001 G1 Football 0002 G2 Football 0003 G2 Basketball 0004 G3 Golf 0005 G3 Swimming 

Я хочу выбрать запись из этой таблицы

 ID GroupNo FieldOfInterest 0001 G1 Football 0002 G2 Football 0004 G3 Golf 

Как я могу это сделать? Пожалуйста, помогите мне .
С уважением

 SELECT t1.* FROM table AS t1 INNER JOIN ( SELECT MIN(ID) AS MinID FROM table GROUP BY GroupNo) AS t2 ON t1.id = t2.MinID 

Предполагая, что «верхняя запись» означает запись с идентификатором samllest, поскольку вы не предоставили заказ.

 SELECT ID, GroupNo, FieldOfInterest FROM YOUR_TABLE a, (SELECT MIN(ID) AS ID FROM YOUR_TABLE GROUP BY GroupNo) b WHERE a.ID = b.ID; 

Здесь, я предполагаю, что по top record вы имели в виду records with the smallest ID value .

Функция SQL Server ROW_NUMBER () может решить эту проблему для вас:

 create table interests ( ID int, GroupNo varchar(2), FieldOfInterest varchar(20) ) insert into interests values (1, 'G1', 'Football'), (2, 'G2', 'Football'), (3, 'G2', 'Basketball'), (4, 'G3', 'Golf'), (5, 'G3', 'Swimming'); with cte as ( select ROW_NUMBER() OVER (PARTITION BY GroupNo ORDER BY ID) as row, * from interests ) select c.ID, c.GroupNo, c.FieldOfInterest from cte c where row = 1