如何使用sql server查询组内的数据

时间:2016-07-02 21:37:55

标签: sql sql-server sql-server-2008 sql-server-2012

我有一个看起来像这样的表,它已被分组并分配了一个组号

示例:

groupnumber userid  username    borrower name
1            1       userA        A
1            1       userA        B
2            2       userB        C
2            2       userB        D
2            3       userC        D

在这个例子中,我已经将组号1显示为期望的结果。每个组应该只有一个用户ID(多个条目没问题),但可以有不同的借款人名称。 < ---这个小组我想保留

对于组中存在不同用户ID的组2,我需要将该组从列表中完全删除或仅查询以便我可以标记为冲突的数据组

我得到了这个设置的第一部分,所以小组正在展示,但第二部分我似乎无法弄清楚。任何帮助都会很感激

基本上我想写一个查询,以便表格产生这个结果

groupnumber userid  username    borrower name
1            1       userA        A
1            1       userA        B      

因此一起删除组编号2,因为用户组在组中不是全部相同

2 个答案:

答案 0 :(得分:0)

很抱歉,当我发布代码时代码得到了满足感。我将尝试Ye Olde Markuppe Editorre,看看我是否可以解决它:

DELETE FROM TABLE_NAME
WHERE GROUPNUMBER IN (
  SELECT GROUPNUMBER
  FROM TABLE_NAME
  WHERE COUNT( DISTINCT USERNAME ) > 1
)

答案 1 :(得分:0)

如果您只想编写一个返回组中只有一个userid的行的查询:

select *
  from tbl
 where groupnumber in (select groupnumber
                         from tbl
                        group by groupnumber
                       having count(distinct userid) = 1)

如果要实际删除组中有多个用户ID的行,以便表中只剩下您感兴趣的行:

delete tbl
 where groupnumber in (select groupnumber
                         from tbl
                        group by groupnumber
                       having count(distinct userid) > 1)
相关问题