1

我有下表,需要提取那些相同值与多个不同 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
4

2 回答 2

1

你可以试试这个。

; 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)
于 2019-08-03T10:58:59.453 回答
0

存在:

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  
于 2019-08-03T12:00:03.620 回答