우리의 목적에 맞게 단순화 한 쿼리가 있습니다. 이 결과를 어떻게 얻습니까? 해당 OrigId
테이블에 두 번 이상 나타나는 모든 행을 돌아 오게하려면은 t-sql에서 간단한 쿼리가 필요합니다.
ID OrigId
----------
1 1
2 1
3 3
4 4
5 4
6 6
Result
ID OrigId
----------
1 1
2 1
4 4
5 4
우리의 목적에 맞게 단순화 한 쿼리가 있습니다. 이 결과를 어떻게 얻습니까? 해당 OrigId
테이블에 두 번 이상 나타나는 모든 행을 돌아 오게하려면은 t-sql에서 간단한 쿼리가 필요합니다.
ID OrigId
----------
1 1
2 1
3 3
4 4
5 4
6 6
Result
ID OrigId
----------
1 1
2 1
4 4
5 4
당신은
SELECT *
FROM dbo.Table
WHERE OrigID IN
(
SELECT OrigID
FROM dbo.Table
GROUP BY OrigID
HAVING COUNT(*) > 1
)
당신은
;WITH CTE AS
(
SELECT *,
COUNT(*) OVER (PARTITION BY OrigId) AS C
FROM YourTable
)
SELECT ID,
OrigId
FROM CTE
WHERE C >1
+1 정확히 (빼기 형식) :-) – xanatos
select *
from selecttest
where origid in
(
select origid
from selecttest
group by origid
having COUNT(*) > 1
)
7 분 전에 게시 된 @ msmucker0527의 답변과 다른 점은 무엇입니까? –
@MartinSmith 그렇지 않습니다. 나는 그의 글을보기 전에 그 글을 쓰고 있었다. 네가 원하면 내가 지울 수있어. –
하위 쿼리 – msmucker0527
은 무엇됩니다 HAVING 문을 사용할 수 있습니다 사용할 수 있습니다 당신은 제외하려고합니까? ID 또는 OrigID를 필터링하고 있습니까? – tsells
나는 이것을 따르지 않는 유일한 사람인가? 원본에서 변경되지 않은 것을 필터링하려고합니까? 그렇다면 왜 4,4가 반환 되나 6,6은 반환되지 않습니까? –
@MikeChristensen - OP의 설명은 존재하지 않지만 'OrigId'가 두 번 이상 나타나는 행으로 반환되어야합니다. –