找出同一学生与不同群体中有多少受试者有关



我有下面的表格,需要将相同值与一个以上不同的groupID相关的那些记录划分。如果在同一groupID下重复相同的值,则不需要获取。

GroupId Value
11       AAA
11       AAA
11       BBB
22       AAA
22       CCC
22       CCC
33       AAA
33       DDD
33       BBB

我已经使用Count(*)尝试了Having Count(*)>1,但没有任何东西可以给我所需的输出

我需要的输出如下所示,在该输出中,它告诉相同的值与不同的GroupId相关联。在这里,如果在同一 GroupId中重复相同的值,我对此并不担心。我只需要一个以上GroupId中可用的值。

所需的输出 -

Column  Value   GroupId
1        AAA    11
1        AAA    22
1        AAA    33
2        BBB    22
2        BBB    33

您可以尝试。

; WITH CTE AS (  
    SELECT DISTINCT GROUPID, VALUE FROM @TAB 
)  
, CT AS (  
    SELECT DENSE_RANK() OVER (PARTITION BY VALUE ORDER BY GROUPID, VALUE) AS SLNO, * FROM CTE
)  
SELECT DENSE_RANK() OVER ( ORDER BY VALUE) AS [COLUMN], * FROM CTE 
    WHERE VALUE IN (SELECT  VALUE FROM CT WHERE SLNO>1)

存在:

select distinct t.*
from tablename t
where exists (
  select 1 from tablename
  where value = t.value and groupid <> t.groupid
)
order by t.value, t.groupid

请参阅演示。
结果:

> GroupId | Value
> ------: | :----
>      11 | AAA  
>      22 | AAA  
>      33 | AAA  
>      11 | BBB  
>      33 | BBB  

相关内容

  • 没有找到相关文章

最新更新