SQL Server groupby两列

SQL Server groupby两列,sql,sql-server,group-by,Sql,Sql Server,Group By,我有一张这种结构的表格: ID TaskID ResourceID IsActive --- ----- ---------- -------- 1 51 101 1 2 52 101 1 3 53 101 1 4 51 102 0 5 52 102

我有一张这种结构的表格:

   ID   TaskID  ResourceID  IsActive  
  ---   -----   ----------  --------
   1      51        101         1
   2      52        101         1
   3      53        101         1
   4      51        102         0
   5      52        102         0
   6      53        102         0     
   7      51        103         1
   8      52        103         0
   9      53        103         1       
我想获取所有记录中
IsActive
列为0的资源。在本例中,我希望得到ResourceID-102作为结果,因为它的
IsActive
列都是0

我试着做:

select ResourceID
from TableName
where ResourceID <> (SELECT ResourceID
                     from TableName 
                     group by ResourceID, IsActive
                     having IsActive = 1) 
此外,我认为我的问题很简单,切中要害,而不是“可能的重复”。未来的读者可能会发现这个问题比建议的重复问题更容易理解。用户更可能通过“SQL Server groupby two columns”来搜索此问题,而不是“SQL:选择没有任何列具有特定值的行的ID”

或者

或者


只要没有其他具有相同资源ID的行具有IsActive=1,则返回一行:

select ResourceID
from TableName t1
where not exists (select 1 from TableName t2
                  where t1.ResourceID = t2.ResourceID
                   and t2.IsActive = 1)

您可能希望执行
选择distinct ResourceID
以删除重复项。

只要没有其他具有相同ResourceID的行的IsActive=1,就返回一行:

select ResourceID
from TableName t1
where not exists (select 1 from TableName t2
                  where t1.ResourceID = t2.ResourceID
                   and t2.IsActive = 1)
select ResourceID
from TableName
where ResourceID not in (SELECT ResourceID
                         from TableName 
                         group by ResourceID, IsActive
                         having IsActive = 1) 

也许您想执行
选择distinct ResourceID
以删除重复项。

如何
按ResourceID分组,使MAX(IsActive)=0
为什么不使示例数据更复杂,添加ResourceID 103,同时包含0和1。(那么空的呢?@jarlh。你说得对。我忘记加了。将立即更新。可能是@TabAlleman的副本。请阅读我的上一篇编辑:)关于
groupbyresourceid的MAX(IsActive)=0的情况如何
为什么不让示例数据更复杂,添加resourceid103,同时包含0和1。(那么空的呢?@jarlh。你说得对。我忘记加了。将立即更新。可能是@TabAlleman的副本。请阅读我的上一次编辑:)在“不存在”子选择中没有引用外部表?是的,刚刚捕获到它。感谢您没有在“不存在”子选择中引用外部表?是的,刚刚捕获到它。谢谢你解决了我的问题。谢谢,伙计:)解决了我的问题。谢谢,伙计:)
select ResourceID
from TableName
where ResourceID not in (SELECT ResourceID
                         from TableName 
                         group by ResourceID, IsActive
                         having IsActive = 1) 
select ResourceID
from TableName
where ResourceID not in (SELECT ResourceID
                         from TableName 
                         group by ResourceID, IsActive
                         having IsActive = 1) 
select ResourceID
from TableName 
group by ResourceID 
having max(IsActive) = 0