http://myhome.naver.com/slimpower/sqlqqq.htm
안녕하세요?
저번에 고난이도 SELECT문에 대해 정말로 많은 도움을 받았습니다.
그리고 마지막으로 한번만 더 도와주세요.
오전반과 오후반을 online이란 필드로 구분하고 있습니다.
즉, 각 교수의 학년별 신청학생수를 집계하려고 합니다.
Case syear WHEN 1 THEN (SELECT Count(sid) FROM s WHERE s.pid=p.pid and syear=1 and online=0) END AS y1, Case syear WHEN 2 THEN (SELECT Count(sid) FROM s WHERE s.pid=p.pid and syear=2 and online=0) END AS y2, Case syear WHEN 3 THEN (SELECT Count(sid) FROM s WHERE s.pid=p.pid and syear=3 and online=0) END AS y3, Case syear WHEN 1 THEN (SELECT Count(sid) FROM s WHERE s.pid=p.pid and syear=1 and online=1) END AS n1, Case syear WHEN 2 THEN (SELECT Count(sid) FROM s WHERE s.pid=p.pid and syear=2 and online=1) END AS n2, Case syear WHEN 3 THEN (SELECT Count(sid) FROM s WHERE s.pid=p.pid and syear=3 and online=1) END AS n3
이렇게 할 수 밖에 없습니까?
Case syear WHER 1 THEN (CASE...
이렇게 해도 다시 할 수는 없습니까?
어제 12시간동안 이것만 가지고 씨름했습니다. -_-;
결론은 위처럼 Case 쿼리를 6번날리는 방법으로 밖에 해결이 안나더군요..
쿼리분석기에서 자꾸 치다보니까 손가락이 말을 안듣고..
한번만 더 도와주세요.
제가 볼때는 case 3번으로 6번의 효과를 볼 수 있는 방법이 있지 않을까 싶습니다.
즉, 결론은 위처럼 하게 되면 그냥 online을 따지지 않고 학년별로 집계를 냈을때 보다
2배 이상의 시간이 걸린다는 겁니다.
감사합니다. |