Sql 筛选具有多个记录的数据
我有一张由部门组成的桌子;以及对增加/删除人员的审计Sql 筛选具有多个记录的数据,sql,sql-server,Sql,Sql Server,我有一张由部门组成的桌子;以及对增加/删除人员的审计 deptid|personid|actionid|lastupdate 3|5678|i|.... 3|5765|i|... 3|8796|i|... 3|5463|i|... 3|5678|r|..... 4|5678|i|.... 在某个特定部门,我需要了解对某个特定部门多次采取行动的所有人员的审计情况 请注意,可以针对多个部门分配一个人 因此,在上述数据中,预期结果为: 3|5678|i|.... 3|5678|r|..... 我尝
deptid|personid|actionid|lastupdate
3|5678|i|....
3|5765|i|...
3|8796|i|...
3|5463|i|...
3|5678|r|.....
4|5678|i|....
在某个特定部门,我需要了解对某个特定部门多次采取行动的所有人员的审计情况
请注意,可以针对多个部门分配一个人
因此,在上述数据中,预期结果为:
3|5678|i|....
3|5678|r|.....
我尝试了下面的方法,但不知道如何继续进一步过滤
select personId,actionid,lastUpdate,RN=ROW_NUMBER()
OVER (PARTITION BY personId ORDER BY lastUpdate)
from DeptAudit where deptId=3
这可能有助于:
SELECT personId,actionid,lastUpdate
FROM DeptAudit
WHERE personid IN
(SELECT personId
FROM DeptAudit
GROUP BY personId
HAVING COUNT(*) > 1)
但数据中没有重复的人员id。无法准确理解你的问题编辑了这篇文章-有一个小的打字错误
DECLARE @Widget TABLE
(ID INT,
Widget INT,
PART NVARCHAR(10));
INSERT INTO @Widget VALUES
(3, 56757, 'i'),
(3, 56755, 'i'),
(3, 56759, 'i'),
(3, 56753,'i'),
(3, 5678, 'r');
;WITH CTE AS (
select ID,Widget,PART,RN = ROW_NUMBER()OVER(PARTITION BY PART ORDER BY Widget desc) from @Widget
)select ID,Widget,PART from CTE WHERE RN = 1