Sql server 2008 r2 报告重复数据

Sql server 2008 r2 报告重复数据,sql-server-2008-r2,ssrs-2008-r2,Sql Server 2008 R2,Ssrs 2008 R2,我需要创建一个报告,找出重复的数据。从上面的示例数据中,报告需要显示cat C复制了cat A的数据(注意记录的数值和数量),cat E和F复制了cat B的数据。显示这一点的最佳方式是什么 示例输出 create table dupt(cat varchar(10), num int) insert dupt(cat,num) values ('A',1),('A',2),('A',3), ('B',1),('B',2),

我需要创建一个报告,找出重复的数据。从上面的示例数据中,报告需要显示cat C复制了cat A的数据(注意记录的数值和数量),cat E和F复制了cat B的数据。显示这一点的最佳方式是什么

示例输出

create table dupt(cat varchar(10), num int)

insert dupt(cat,num) values ('A',1),('A',2),('A',3),
                            ('B',1),('B',2),
                            ('C',1),('C',2), ('C',3),
                            ('D',1),('D',2), ('D',4),
                            ('E',1),('E',2),
                            ('F',1),('F',2)

更新:切换到传统的集合匹配,仅在最终结果上使用和:

-------------
|cat | dupby|
-------------
| A  |  C   |
| B  | E, F |
-------------

那么,预期的产出是什么呢?只是包含重复项的行?A的前两个集合不是b的两个集合吗?嗨,我已经添加了预期的输出,类别的行数需要与之匹配,通过在Wow上发布的解决方案解决,谢谢@sqlzim提供快速解决方案。看起来它能满足我的要求。我将在一段时间后恢复。我得到一个转换错误,不是因为您的查询有错误,而是因为在实际数据中,cat是int。添加了转换函数,查询似乎正在运行,但花费了太多的时间。上面的脚本可以在较小的集合中运行,但我需要在一个包含大约400000条记录的表上运行此脚本。此查询正在阻止数据库上的其他查询,我不得不在45分钟后取消它。@raj更新为一个成本较低的集合匹配查询。
;with cte as (
  select *
    , cnt = count(*) over (partition by cat)
  from t
)
, duplicates as (
  select 
        x.cat
      , dup_cat = x2.cat
  from cte as x 
    inner join cte as x2
       on x.cat < x2.cat
      and x.num = x2.num
      and x.cnt = x2.cnt 
  group by x.cat, x2.cat, x.cnt
  having count(*) = x.cnt
)
select 
    d.cat
  , dupby = stuff((
        select ', '+i.dup_cat
        from duplicates i
        where i.cat = d.cat
        for xml path (''), type).value('.','varchar(8000)')
     ,1,2,'')
from duplicates d
where not exists (
    select 1
    from duplicates i
    where d.cat = i.dup_cat
    )
group by d.cat
+-----+-------+
| cat | dupby |
+-----+-------+
| A   | C     |
| B   | E, F  |
+-----+-------+