【发布时间】:2020-07-26 07:33:09
【问题描述】:
这是我的 SQL Server 表:
DECLARE @EMP TABLE
(
Id INT,
NAME VARCHAR(200),
AlarmOnTimeStamp DATETIMEOFFSET,
AlarmOffTimeStamp DATETIMEOFFSET NULL
);
DECLARE @EMPCOMMENT TABLE
(
EmpId INT,
Comment VARCHAR(2000)
)
INSERT INTO @EMP VALUES (1121, 'Test1', '2020-04-09 01:56:29.507', NULL)
INSERT INTO @EMP VALUES (57, 'Test1', '2020-04-09 02:56:29.507', NULL)
INSERT INTO @EMP VALUES (992, 'Test2', '2020-04-09 01:56:29.507', '2020-04-09 03:56:29.507')
INSERT INTO @EMPCOMMENT VALUES (2, 'Test1')
INSERT INTO @EMPCOMMENT VALUES (2, 'Test2')
SELECT *
FROM @emp e
LEFT JOIN @EMPCOMMENT ec ON ec.Id = e.Id
SELECT
*,
rn = ROW_NUMBER() OVER (PARTITION BY e.Name ORDER BY AlarmOnTimeStamp, e.Name DESC)
FROM @emp e
LEFT JOIN @EMPCOMMENT ec ON e.Id = ec.EmpId
输出:
Id Name AlarmOnTimeStamp AlarmOffTimeStamp EmpId Comment rn
--------------------------------------------------------------------------------------------
2 Test1 2020-04-09 02:56:29 NULL 2 Good 1
2 Test1 2020-04-09 02:56:29 NULL 2 Best 1
3 Test2 2020-04-09 01:56:29 2020-04-09 03:56:29.50 NULL NULL 1
我只想要上面的结果
如果您在屏幕截图中看到第一条记录显示被删除,原因是它是一条旧记录,我只是想如果员工姓名相同,则获取其最新记录及其所有评论
【问题讨论】:
标签: sql sql-server tsql date greatest-n-per-group