Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Запрос по выбору макс. дат  [new]
Сергей Мирный
Member

Откуда:
Сообщений: 40
Добрый день, всем!

Просьба подсказать в запросе:

Есть таблица книг (Journal_car)
id_j_car – ИД книги

и таблица выдачи книг (Car_out), в которой:
id_j_car – ИД книги
dt_out – дата выдачи книги
dt_return – дата возврата книги
id_car_out – ИД записи в таблице выдачи

(см. таблица_Car_out.JPG)

Надо выбрать все книги и показать максимальную дату выдачи если книга выдавалась (если нет – то пусто) и дату возврата, если книга возвращалась:
SELECT a.id_j_car,MAX(l.dt_out) as dt_out,l.dt_return FROM Journal_car a, Car_out l WHERE a.id_j_car=l.id_j_car GROUP BY a.id_j_car,l.dt_return ORDER BY a.id_j_car DESC


К сообщению приложен файл. Размер - 31Kb
29 ноя 16, 11:25    [19946285]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по выбору макс. дат  [new]
Сергей Мирный
Member

Откуда:
Сообщений: 40
выбирает правильно, но по две записи (см. результат.JPG).

К сообщению приложен файл. Размер - 26Kb
29 ноя 16, 11:25    [19946287]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по выбору макс. дат  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Сергей Мирный,

Вам надо одним запросом сформировать ключ, а вторым запросом сформировать выборку по этому ключу.
Иногда это делают подзапросом или нумерацией строк row_number() over ().
29 ноя 16, 11:32    [19946336]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по выбору макс. дат  [new]
Sybex
Member

Откуда: Moscow
Сообщений: 113
;WITH CTE
AS
(
    SELECT id_j_car
          ,dt_out
          ,dt_return
          ,id_car_out
          ,RANK() OVER (PARTITION BY id_j_car ORDER BY dt_out DESC) AS r
      FROM Car_out
)
SELECT a.id_j_car
      ,l.dt_out
      ,l.dt_return
  FROM CTE l JOIN Journal_car a ON a.id_j_car=l.id_j_car
 WHERE r = 1
 ORDER BY a.id_j_car DESC
29 ноя 16, 11:47    [19946417]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по выбору макс. дат  [new]
Сергей Мирный
Member

Откуда:
Сообщений: 40
Спасибо Sybex, как и надо!
29 ноя 16, 12:46    [19946726]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить