2014-03-01 6 views
0

특정 개체에 대한 모든 활동 로그를 가져올 보고서를 가져 오려고합니다. SQL Y 열에 B가 포함 된 레코드가있는 경우 A와 동일한 X 열의 모든 레코드 가져 오기

는 기본적으로 나는이에서 끌어하려고 :

Object, Activity, User, Timestamp, Group 
Object1, Activity1, User, Timestamp, Home 
Object1, Activity2, User, Timestamp, Away 
Object1, Activity3, User, Timestamp, Away 
Object2, Activity1, User, Timestamp, Away 
Object2, Activity2, User, Timestamp, Away 
Object3, Activity1, User, Timestamp, Home 
Object4, Activity1, User, Timestamp, Away  
Object4, Activity1, User, Timestamp, Home 

그리고 나는 그룹 컬럼의는 "홈"항목이있는 경우 모든 개체 기록을 끌어합니다. 개체 레코드의 레코드 중 하나가 적어도 한 번 이상 포함되어있는 한 열에 "집"이없는 레코드도 필요합니다. 그래서 예를 들어

:

Object1, Activity1, User, Timestamp, Home 
Object1, Activity2, User, Timestamp, Away 
Object1, Activity3, User, Timestamp, Away 
Object3, Activity1, User, Timestamp, Home 
Object4, Activity2, User, Timestamp, Away 
Object4, Activity3, User, Timestamp, Home 

는 MS SQL을 사용하여이 작업을 수행 할 수있는 방법이 있습니까?

답변

1

는 그 다음에 전체 테이블을 조인 '집'과 오브젝트를 찾을 하위 쿼리/CTE를 사용

SELECT a.* 
FROM YourTable a 
JOIN (SELECT DISTINCT [Object] 
     FROM YourTable 
     WHERE [group] = 'Home' 
    )b 
ON a.[Object] = b.[Object] 

데모 : SQL Fiddle

+0

감사합니다! 그것은 완벽하게 작동했습니다! –

0
select * 
from table a 
where exists(select 1 from table b where a.object = b.object and group = 'Home') 
0
SELECT * 
FROM TableName 
WHERE OBJECT IN (SELECT Object 
       FROM TableName 
       WHERE [GROUP] = 'Home')