TableOne
PersonId PersonScore
1 10
1 20
2 99
2 40
3 45我只需要获取那些PersonId出现不止一次的行,例如,下面是我想实现的结果集
PersonId PersonScore
1 10
1 20
2 99
2 40我在用cte
;WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY i.PersonId ORDER BY i.PersonId) AS [Num]
FROM TableOne i
)
SELECT *
FROM cte
WHERE cte.Num > 1问题是它删除了额外的行。它移动任何PersonId的第一个实例。有谁能提出解决办法吗?
发布于 2014-03-19 15:13:03
您可以使用一个简单的相关子查询:
SELECT PersonId, PersonScore
FROM dbo.TableOne t1
WHERE (SELECT COUNT(*)
FROM dbo.TableOne t2
WHERE t1.PersonId = t2.PersonID) > 1https://stackoverflow.com/questions/22509939
复制相似问题