각각의 경우를 Cont를 Sum 하고 싶습니다. 0 3 2,060

by 손님 [2008.06.04 00:59:12]


우선은 순수 SQL로 짜여졌으면 합니다..뭐 순수SQL이니까 머..이곳게시판에도 올릴 수는 있겠네요..
경우의 수는 네가지가 나올 수 있구요..
각각의 테이터는 밑에와 같이 될 수 있습니다.

밑에 View_T라고 한것은 네개 테이블에 대한 Query의 결과로 생각하시면 보시면되요.

View_T

UP  ,EX  ,CM  ,DR  ,EQ ,ST       >>>>   (Count 계산시 덧셈 or 뺄셈)
p     , 1    ,0     ,0      ,0     ,0                       ,+
p     , 1    ,0     ,0     ,0      ,0                       ,+
p     , 1    ,1     ,p     ,0      ,0                       ,+
p     , 0    ,1     ,p     ,0      ,0                       ,+
p     . 0    ,1     ,e     ,0      ,0                       ,-
p     , 0    , 0    ,0     ,1      ,1                       ,+
x     ,~~~~~~~~~~~~                             UP가 ’p’가 아닐경우는 무시

case 1)- 이녀석을 합하고..
select count(*) as CNT
from View_T
where UP=’p’ and EX=1

case 2)- 이녀석을 합하고..
select count(*) as CNT
from View_T
where UP=’p’ and EX=0 and CM=1 and DR=’p’

case 3)- 이녀석은 빼고
select count(*)
from View_T
where UP=’p’ and EX=0 and CM =1 and DR=’e’

case 4) - 이녀석은 합하고
select count(*)
from View_T
where UP=’p’ and EX=0 and CM=0 and EQ=1 and ST=1


case 1)+ 2)-3)+4)를 확인하고 싶은 거죠...

이걸 하나의 SQL로 짜려고 하면 어떻게해야되죠?..
MS_SQL도 아니공 Oracle도 아니공..
ACCESS에 순수 SQL쿼리로 날려보려고 합니다..access 함수를 사용해도 이상은 없구요..

by 마농 [2008.06.04 08:42:51]
SELECT SUM(
CASE
WHEN ex = 1 THEN 1
WHEN ex = 0 AND cm = 1 AND dr = 'p' THEN 1
WHEN ex = 0 AND cm = 1 AND dr = 'e' THEN -1
WHEN ex = 0 AND cm = 0 AND eq = 1 AND st = 1 THEN 1
END
) AS result
FROM view_t
WHERE up = 'p'

by 된장 [2008.06.04 09:22:15]
마농님 감솨합니다..~~~..오오...으흐흐흐..
Select Sum(
Switch (ex=1 ,1,
ex = 0 AND cm = 1 AND dr = 'p' , 1,
ex = 0 AND cm = 1 AND dr = 'e' , -1 ,
ex = 0 AND cm = 0 AND eq = 1 AND st = 1 , 1 ) as result
from view_t
where up='p')
이렇게 하면 될 듯 하네요..
이녀석이 제가 상징적으로 만든 것이라 실행까지는 못해보고..
또한 제가 레코드 자체를 Count 하는 것만을 생각했지
실제로 +1,-1의 값을 주고 Sum을 하려고 하는 것은
전혀 생각하지 못한 방법이네요...역시 대단합니다..
Access에는 Switch가 있군요...


by neopdj [2008.06.04 11:40:02]
흐흐흐...쿼리를 짜본 결과 생각한 만큼 잘 나오네요..
어차피 써먹을 것은 아니지만....원하는 결과가 나오니 좋네요..으허허허
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입