아래와 같은 쿼리를 실행하면 집계 또는 하위 쿼리가 포함된 식에서는 집계 함수를 수행할 수 없습니다.
라는 에러문구가 뜨는데요
select isnull(sum(case when cs_idx in (select distinct idx from TBL where tmp_sum>10) then cal_num else 0 end),0)
from TBL a inner join TBL_SUB b on a.idx=b.cs_idx
in 안에 구문에 그냥 숫자를 쓰면 실행되는데
쿼리형태로 바꾸면 안되네요
저 하나의 쿼리만 실행하려면 in 안의 구문을 다른 형태로 바꿀 수 있을 것 같은데
case when 구문으로 다른 부분도 있어서 case when 문 형태로 해야 합니다.
case when 구문 형태로 저와 같은 쿼리를 변경할 수 있는 방법이 있나요?
Comment 3
-
항해자™
2016.10.04 10:31
-
항해자™
2016.10.04 10:36
declare @vIdx varchar(1000) = ','
select distinct @vIdx += idx +',' from TBL where tmp_sum>10
case when charindex(','+ rtrim(cs_idx) +',',@vIdx) > 0 then call_num else ...
-
손꽁쥐
2016.10.04 10:39
SELECT SUM(cal_num) AS 'cal_num'FROM(SELECT CASE WHEN cs_idx IN (SELECT DISTINCT idx FROM TBL WHERE tmp_sum > 10) THEN cal_num ELSE 0 END AS 'cal_num'FROM TBL ainner join TBL_SUB b ON a.idx = b.cs_idx) ASELECT ISNULL(SUM(cal_num), 0)FROM TBL ainner join TBL_SUB b ON a.idx = b.cs_idxWHERE a.tmp_sum > 10
상관 쿼리가 아니니, 변수로 받아서 비교하는 방법으로 하심이 좋을 듯 하네요,,,