GroupNumber 를 포함하고 있는 Test1 테이블과
GroupNumber 와 Model, 그리고 완료여부를 포함하고 있는 Test2 테이블이 있습니다
create table dbo.Test1 (GroupNumber varchar(20) )
create table dbo.Test2 (GroupNumber varchar(20) , Model varchar(20) , FinishFlag varchar(20) )
insert into Test1 values ('20140201')
insert into Test1 values ('20140208')
insert into Test1 values ('20140215)
insert into Test2 values ('20140201', 'A', '완료')
insert into Test2 values ('20140201', 'B', '완료')
insert into Test2 values ('20140201', 'C', '미완료') --- '20140201' 모델중 C 가 미완료됨
insert into Test2 values ('20140208', 'D', '완료')
insert into Test2 values ('20140208', 'E', '미완료') --- '20140208' 모델중 E 가 미완료됨
insert into Test2 values ('20140208', 'F', '완료')
insert into Test2 values ('20140208', 'G', '완료')
insert into Test2 values ('20140215', 'H', '완료')
insert into Test2 values ('20140215', 'I', '완료')
insert into Test2 values ('20140215', 'J, '완료')
insert into Test2 values ('20140215', 'K', '완료')
insert into Test2 values ('20140215', 'L', '완료') --- '20140215' 모든 모델이 완료됨
이렇게 데이타가 존재시 제가 원하는 결과값은
포함된 모든 모델이 완료된 GroupNumber 만을 가져오고 싶습니다
쿼리를 어떻게 해야하나요?
-----원하는 결과값----
GroupNumber
'20140215'
전체 COUNT와 완료 COUNT가 일치하는 것만 뽑으면 됩니다.
DECLARE @TEST1 TABLE (GROUPNUMBER VARCHAR(20))
DECLARE @TEST2 TABLE (GROUPNUMBER VARCHAR(20), MODEL VARCHAR(20), FINISHFLAG VARCHAR(20))
INSERT INTO @TEST1 VALUES ('20140201')
INSERT INTO @TEST1 VALUES ('20140208')
INSERT INTO @TEST1 VALUES ('20140215')
INSERT INTO @TEST2 VALUES ('20140201', 'A', '완료')
INSERT INTO @TEST2 VALUES ('20140201', 'B', '완료')
INSERT INTO @TEST2 VALUES ('20140201', 'C', '미완료') -- '20140201' 모델중 C 가 미완료됨
INSERT INTO @TEST2 VALUES ('20140208', 'D', '완료')
INSERT INTO @TEST2 VALUES ('20140208', 'E', '미완료') -- '20140208' 모델중 E 가 미완료됨
INSERT INTO @TEST2 VALUES ('20140208', 'F', '완료')
INSERT INTO @TEST2 VALUES ('20140208', 'G', '완료')
INSERT INTO @TEST2 VALUES ('20140215', 'H', '완료')
INSERT INTO @TEST2 VALUES ('20140215', 'I', '완료')
INSERT INTO @TEST2 VALUES ('20140215', 'J', '완료')
INSERT INTO @TEST2 VALUES ('20140215', 'K', '완료')
INSERT INTO @TEST2 VALUES ('20140215', 'L', '완료') -- '20140215' 모든 모델이 완료됨
SELECT A.GROUPNUMBER, 전체 = COUNT(1), 완료 = COUNT(CASE WHEN B.FINISHFLAG = '완료' THEN 1 END)
FROM @TEST1 A LEFT OUTER JOIN
@TEST2 B ON A.GROUPNUMBER = B.GROUPNUMBER
GROUP BY A.GROUPNUMBER
SELECT A.GROUPNUMBER
FROM @TEST1 A LEFT OUTER JOIN
@TEST2 B ON A.GROUPNUMBER = B.GROUPNUMBER
GROUP BY A.GROUPNUMBER
HAVING COUNT(1) = COUNT(CASE WHEN B.FINISHFLAG = '완료' THEN 1 END)