Выберите с группировкой по и максимальной дате - PullRequest
1 голос
/ 10 мая 2019

это, вероятно, дублирующий вопрос, но я не могу понять, как реализовать предыдущие предложения.

мои данные выглядят так, как это важно:

drawing    method       Location        thk_date
314C0010   UT       05.01       2016-05-24 
314C0010   UT       05.01       2011-10-26 
314C0010   UT       06.01       2016-05-24 
314C0010   UT       07.01       2016-05-24 

Когдамой выбор выполняется для местоположения 05.01 Я хочу только строку с самой последней thk_Date

Вот мое утверждение, которое просто получает все записи.

SELECT Distinct
   t.[Id]
  ,t.[SurveyNumber]
  ,t.[TPLATFORM]
  ,t.[DRAWING]
  ,r.[Desc]
  ,t.[METHOD]
  ,t.[LOCATION]
  ,t.[THK_DATE]
  ,t.[THICK]
  ,t.[MEAS_THK]
  ,t.[COMMENTS]
  ,t.[EXCLUDE]
  ,t.[PAINT]
  ,t.[CF1]
  ,t.[CF2]
  ,t.[CF3]
  ,t.[NF1]
  ,t.[NF2]
  ,t.[Year]
  ,t.[Completed]
  ,t.Created
  ,t.CreatedBy
  ,t.ModifiedBy
  ,t.Modified
  ,YEAR(THK_DATE)
  ,t.Inservice

FROM Thk t
left JOIN ref r ON r.[DRAWING] = t.[DRAWING]
left JOIN eng e ON e.[DRAWING] = t.[DRAWING]

WHERE t.SurveyNumber = @SurveyNumber 
AND t.[Year] = @Year

ORDER BY t.DRAWING, t.Method, t.[LOCATION], THK_DATE desc

Как получить только строки смакс (thk_date)?Я попытался сгруппировать и выбрать топ 1, но получил только одну запись.

1 Ответ

0 голосов
/ 10 мая 2019

Вы можете использовать ROW_NUMBER() для этого.

Поскольку вы не указали структуру других таблиц, вот пример.

declare @Drawings as 
Table(drawing varchar(100), 
      method varchar(2), 
      Location varchar(10),
      thk_date DateTime)

INSERT INTO @Drawings
VALUES
('314C0010', 'UT','05.01','2016-05-24'), 
('314C0010', 'UT','05.01','2011-10-26'), 
('314C0010', 'UT','06.01','2016-05-24'), 
('314C0010', 'UT','07.01','2016-05-24') 


;WITH CTE AS
(
select row_number() over(partition by Location order by thk_date desc) as rn,*
from @Drawings
)

select * from CTE where rn=1

Скрипка здесь

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