doc_num user_num receive_date type status
1 1 2012-01-01 1 0
1 2 null 1 0
1 3 null 1 0
1 4 2012-01-01 2 1
1 5 2012-01-01 2 0
위와같이 문서 1 에 대한 결재권자들에 대한 테이블이 있습니다.
type 2 에 대해서는 receive_date 가 null 이 아니고 status 가 0 이면 결재를 할 수가 있고,
type1 에 대해서는 receive_date 가 null 이 아니고, status 가 0 이고 type 2의 상태가 0 인것이 없을 때 결재가 가능합니다.
결재를 하게 되면 status 가 1 로 설정이 됩니다.
즉 user 5는 결재할 문서가 1개가 있고, 나머지에게는 결재할 문서가 없습니다.
내가 결재할 문서의 개수를 구하려면 어떻게 해야 할까요?
원래는 recive_date 가 null 이 아니고 status 가 0 인 개수를 구하면 되었는데,
회사에 규정이 바뀌어서 type 2가 결재가 완료된 후 즉 status 가 1로 모두 바뀐 후 type 1이 결재를 할 수 있게 되었습니다.
어떻게 하면 내가 현재 결재할 문서의 개수를 구할 수 있을까요?
결재할 문서에 대해 사용자의 결재 타입이 type2라면 status = 0 인 개수를 구하면 되고,
결재할 문서에 대해 사용자의 결재 타입이 type1라면 type2에 status 가 0 인 개수가 0이고, receive_date <> null이고, status = 0 인 개수를 구해야 합니다.
어떻게 쿼리문을 짤 수 있을까요?
기존에는 Select count(user_num) from Table where user_num = 1 and receive_date is not null and status = 0 이렇게 했었는데...
Select count(user_num) from Table where user_num = 1 and receive_date is not null and status = 0 and type = 2
union
Select count(user_num) from Table where user_num = 1 and receive_date is not null and status = 0 and type = 1 and 조건이 type = 2 에 status = 0 이 하나도 없을 경우를 추가를 시키면 될꺼 같은데.... 어케 할수 있을까요..
Comment 1
-
처리짱
2013.08.28 17:06
내용을 정확히 파악을 못했는데요...
union에 하신 각각의 where 절을 select 뒤에 CASE WHEN 으로 넣으시면
원하는 결과가 나오지 않을까 싶네요..