증상
다음과 같은 경우를 생각해 볼 수 있습니다.
-
Microsoft SQL Server 2012가 설치 되어 있는 컴퓨터를 사용 하 고 있습니다.
-
SELECT 문에 case 문이 포함 된 쿼리와 GROUP BY 문의 case 문이 있습니다.
-
두 CASE 문은 NULL로 평가 됩니다.
-
쿼리를 실행 합니다.
이 경우 다음과 유사한 내용의 오류 메시지가 나타납니다.
메시지 8120, 수준 16, 상태 1, 줄 3 열 ' <열 이름> '은 (는) 집계 함수 또는 GROUP by 절에 포함 되어 있지 않으므로 선택 목록에서 유효 하지 않습니다.
예를 들어 다음 쿼리를 실행 합니다.create database testgouse testgocreate table tvt ( v1t binary(1) null)create table tln (ln numeric(5) not null)goselectcase when 1=2 then t1.col1else 10end,casewhen t1.col1 = 2 then t1.col2endfrom (select t2.v1t as col1, 10 as col2 from tvt t2) t1group by case when 1=2 then t1.col1else 10end,casewhen t1.col1 = 2 then t1.col2endgo 쿼리에서 "if = 2, t1 (col1) 10"은 10으로 계산 됩니다. NULL을 사용 하 여 "10"을 바꾸면이 문제가 발생 합니다.참고SELECT 문에서 CASE 문 중 하나를 제거 하거나 GROUP BY 문에서이 문제가 발생 하지 않습니다.
해결 방법
수정 프로그램을 적용 한 후 핫픽스 작업을 수행 하기 위해 추적 플래그를 사용 하도록 설정 해야 합니다. 이 수정을 적용 해야 하는 경우 Microsoft 지원에 문의 하세요.
이 문제는 다음 SQL Server 누적 업데이트에서 처음 수정 되었습니다.
SQL Server 2012 SP1 용 누적 업데이트 6 /en-us/help/2874879
각각의 새로운 새 누적 업데이트에는 이전 누적 업데이트에 포함 된 모든 핫픽스와 모든 보안 수정 사항이 포함 되어 있습니다. SQL Server에 대 한 최신 누적 업데이트를 확인 하세요.
상태
Microsoft는 "적용 대상" 절에 나열한 Microsoft 제품에서 이 문제를 확인했습니다.