Форум программистов, компьютерный форум, киберфорум
Наши страницы
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Другие темы раздела
SQL Server Объединение интервалов http://www.cyberforum.ru/sql-server/thread606209.html
Здравствуйте! Подскажите, плиз, как объединить интервала для таблицы на SQL? В таблице имеются поля logical_name, grup, start, end. Последнии два поля типа дата/время, перве два поля -...
SQL Server Перенести таблицу из одной БД в другую
Есть две базы данных в обоих базах данных есть две идентичные по структуре таблице и по названию. Но в одно базе данных таблица заполнена а в другой нет. Как перенести или перекопировать заполненную...
Цикл вместо курсора SQL Server
Здравствуйте! У меня такая задача. В одной таблице хрсятся какие-то записи. Поля таблицы первой ID, name, surname, town. Во второй таблице только один столбец town (значения городов в этой таблице...
SQL Server Посоветуйте литературу пожалуйста День добрый. У меня в университете был курс баз данных, преподаватель дал хороший обзор реляционных баз данных, основных принципов и языка SQL. Посоветуйте "взрослую" литературу или статьи по темам... http://www.cyberforum.ru/sql-server/thread605459.html
SQL Server Запрос на выборку http://www.cyberforum.ru/sql-server/thread605450.html
База данных содержит таблицы: Сотрудник (код_сотрудника, фио, ....) Дети (код_сотрудника, фио_ребенка). Выдать список сотрудников, имеющих менее 2 детей придумал так: select id from Emp...
SQL Server ER диаграмма
Привет всем! Имеется БД в MS SQL Server 2005. Для нее надо нарисовать ер диаграмму. Прикреплю мой вариант но он неправильный как сказал препод((
Как генерировать скрипты SQL Server
Подскажите как сгенерить скрипт на всю базу через SQL Server Management Studio > Tasks->Generate Script
SQL Server Косяк с русским языком Drupal Добрый день, у меня проблема с русским языком CMS Drupal при редактировании меню со ссылками при написании текста на русскго текстав ссылках выскакивает такая кракозябра PDOException: SQLSTATE:... http://www.cyberforum.ru/sql-server/thread605250.html
SQL Server Строки с разделителями http://www.cyberforum.ru/sql-server/thread605216.html
здравствуйте! Я в хранимую процедуру передаю строку, в которой перечислены имена через запятую. как в теле процедуры можно обратиться в цикле к каждому имени этой строки в отдельности? Вид строки:...
SQL Server SQL запрос Доброй ночи! Помогите пожалуйста разобраться с запросом: Схема БД состоит из четырех таблиц: Product(maker, model, type) PC(code, model, speed, ram, hd, cd, price) Laptop(code, model, speed,... http://www.cyberforum.ru/sql-server/thread605135.html
cygapb-007
1309 / 941 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
17.01.2013, 14:50 0

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

17.01.2013, 14:50. Просмотров 17412. Ответов 6
Метки (Все метки)

Ответ

В общем у меня тоже возникла такая же проблема.
В таблице для каждого набора ключей есть куча строк с разными данными.
Надо выдернуть для каждого значения из набора ключей только одну строку, содержащую максимальную дату.
Если максимальных дат несколько, надо выбрать из них строку с минимальным значением другого поля
Если и таких строк несколько, можно взять любую из них, но только одну

Решение такое: взять TOP 1 для каждого ключа в выборке с учетом внутренней сортировки для каждого значения ключей.

Короче - вот:
SQL
1
2
3
4
5
6
7
8
9
SELECT t.*
FROM (
   SELECT 
      ROW_NUMBER() OVER(partition BY myKey1, myKey2 ORDER BY myDate DESC, myAddSort ASC) RowNum,
      *
   FROM myTable
   WHERE myFilter = 1
   ) t
WHERE t.RowNum = 1
Все данные в таблице делятся на секции по одинаковым значениям полей myKey1 и myKey2,
внутри каждой секции строки нумеруются в соответствии с заданным порядком сортировки,
затем из каждой секции берется TOP 1 запись, т.е. та, у которой RowNum = 1
(запись с номером 1 есть в любой секции - то есть ничего не теряется при отсеивании по TOP 1)

Для JOIN легко формируется аналогичная конструкция:
SQL
1
2
3
4
5
6
7
8
SELECT *
FROM headers h
JOIN (
   SELECT 
      ROW_NUMBER() OVER(partition BY key1, key2 ORDER BY myDate DESC) RowNum,
      , *
   FROM details
   ) d ON d.key1=h.key1 AND d.key2=h.key2 AND d.RowNum = 1


Вернуться к обсуждению:
Выбор строк по максимальной дате
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2013, 14:50
Готовые ответы и решения:

Выбрать значение по максимальной дате
Доброй ночи, форумчане! Можете помочь разобраться? у меня имеется таблица с полями...

Выборка по максимальной дате для данных - SQL
Есть необходимость сделать запрос, для вывода автомобилей, который нужно пройти техосмотр в...

MS SQL выбор по дате (неплательщиков)
Доброго времени суток! Прошу вашей помощи т.к. уже все перерыл и ничего не нашел :( Задача...

Выбор значения по максимальной дате
Добрый день! Помогите, пожалуйста, написать функцию DLookup. Есть таблица Оклады с полями: -...

Выборка строк по максимальной дате
Всем привет! Есть таблица вида: Широта | Долгота | Транспорт | Дата 1 | 1 | ...

6
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru