MSSQL 열이 집계 함수나 GROUP BY 절에 없으므로 SELECT 목록에서 사용할 수 없습니다.
페이지 정보
본문
<수정전>
select (
(case substring(jumin,8,1)
when '1' then year(getdate()) - (left(jumin,2)+1900)
when '2' then year(getdate()) - (left(jumin,2)+1900)
else year(getdate()) - (left(jumin,2)+1900)
end )
/10) *10 'age', count(*) 'age_total', c1idx 'c1idx', hope1 'hope1'
from fpr_sin100
group by ((case substring(jumin,8,1)
when '1' then year(getdate()) - (left(jumin,2)+1900)
when '2' then year(getdate()) - (left(jumin,2)+1900)
else year(getdate()) - (left(jumin,2)+1900)
end )/10) *10, c1idx
<오류메시지>
메시지 8120, 수준 16, 상태 1, 줄 1
'fpr_sin100.hope1' 열이 집계 함수나 GROUP BY 절에 없으므로 SELECT 목록에서 사용할 수 없습니다.
[ 답변 ]
sum()이나 count(), max()등은 집계함수라고 하며, group by와 함께 사용하는 경우는 집계함수에 쌓이지 않은 컬럼들은 전부 group by list에 있어야 합니다.
또한 group by를 안쓰려는 경우는 집계함수가 하나도 없던지, 모든 컬럼들이 전부 집계함수로 들어가 있어야 합니다.
<수정>
select (
(case substring(jumin,8,1)
when '1' then year(getdate()) - (left(jumin,2)+1900)
when '2' then year(getdate()) - (left(jumin,2)+1900)
else year(getdate()) - (left(jumin,2)+1900)
end )
/10) *10 'age', count(*) 'age_total', c1idx 'c1idx', hope1 'hope1'
from fpr_sin100
group by ((case substring(jumin,8,1)
when '1' then year(getdate()) - (left(jumin,2)+1900)
when '2' then year(getdate()) - (left(jumin,2)+1900)
else year(getdate()) - (left(jumin,2)+1900)
end )/10) *10, c1idx, hope1
댓글목록
등록된 댓글이 없습니다.