데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
아래와 같은 쿼리를 실행하면 집계 또는 하위 쿼리가 포함된 식에서는 집계 함수를 수행할 수 없습니다.
라는 에러문구가 뜨는데요
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
상관 쿼리가 아니니, 변수로 받아서 비교하는 방법으로 하심이 좋을 듯 하네요,,,