Sql 从聚合结果集中获取唯一值
我有一个聚合查询,检查是否有多条记录符合某些条件Sql 从聚合结果集中获取唯一值,sql,sql-server-2008,Sql,Sql Server 2008,我有一个聚合查询,检查是否有多条记录符合某些条件 SELECT RegardingObjectId, COUNT(*) FROM [CRM_MSCRM].[dbo].[AsyncOperationBase] a where WorkflowActivationId IN ('55D9A3CF-4BB7-E311-B56B-0050569512FE', '1BF5B3B9-0CAE-E211-AEB5-0050569512FE', 'EB231B79-84A4-E211-97E9-
SELECT RegardingObjectId, COUNT(*) FROM [CRM_MSCRM].[dbo].[AsyncOperationBase] a
where WorkflowActivationId IN ('55D9A3CF-4BB7-E311-B56B-0050569512FE',
'1BF5B3B9-0CAE-E211-AEB5-0050569512FE',
'EB231B79-84A4-E211-97E9-0050569512FE',
'F0DDF5AE-83A3-E211-97E9-0050569512FE',
'9C34F416-F99A-464E-8309-D3B56686FE58')
and StatusCode = 10
group by RegardingObjectId
having COUNT(*) > 1
这很好,但是在AsyncOperationBase
中有一个字段是唯一的。假设count(*)
=3,那么AsyncOperationBase
中的AsyncOperationBaseId
将有3个不同的值,因为AsyncOperationBase
是表的主键
老实说,我甚至不知道用什么术语和表达方式才能找到谷歌的解决方案
如果有人有一个解决方案,还有,有什么话来形容我在寻找什么?也许BI人经常面临这样的要求或是什么
我可以用一个SSRS报告来完成这项工作,该报告将可视化地进行分组,然后我可以展开每个分组行以获得AsyncOperationBaseId
值,但仅仅通过SQL,我似乎找不到出路
谢谢。我想这不是我想要的。如果上面的查询返回10行,并且COUNT(*)=2,这意味着我实际上有20行。现在我想要的是所有这20行的唯一ID(主键)。现在,似乎就是这样了。:)但是我不得不在最上面的SELECT上添加相同的条件。
select * from [CRM_MSCRM].[dbo].[AsyncOperationBase]
where RegardingObjectId in
(
SELECT RegardingObjectId
FROM [CRM_MSCRM].[dbo].[AsyncOperationBase] a
where WorkflowActivationId IN
(
'55D9A3CF-4BB7-E311-B56B-0050569512FE',
'1BF5B3B9-0CAE-E211-AEB5-0050569512FE',
'EB231B79-84A4-E211-97E9-0050569512FE',
'F0DDF5AE-83A3-E211-97E9-0050569512FE',
'9C34F416-F99A-464E-8309-D3B56686FE58'
)
and StatusCode = 10
group by RegardingObjectId
having COUNT(*) > 1
)