这可能是一个重复的问题,但我似乎无法弄清楚如何实施先前的建议。
重要的数据如下:
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
如何仅获取具有max(thk_date)的行?我试图分组并选择前1名,但只获得一条记录。
答案 0 :(得分:0)
您可以为此使用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