过滤具有多于1条记录的数据

时间:2014-04-15 07:02:20

标签: 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|.....

我尝试了以下内容 - 但不知道如何继续进一步过滤

select personId,actionid,lastUpdate,RN=ROW_NUMBER()  
OVER (PARTITION BY personId ORDER BY lastUpdate)
from DeptAudit where deptId=3

2 个答案:

答案 0 :(得分:0)

这可能会有所帮助:

SELECT personId,actionid,lastUpdate 
  FROM DeptAudit
 WHERE personid IN 
         (SELECT personId 
            FROM DeptAudit 
           GROUP BY personId 
          HAVING COUNT(*) > 1)

答案 1 :(得分:0)

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
相关问题