개발/SQL SERVER

MSSQL UNION ALL 데이터 형

whatever , whoever 2022. 9. 6. 15:00
반응형

MSSQL 에서 UNION ALL 사용 시 컬럼타입은 첫번째 SELECT 문의 데이터형을 따라간다.

 

예를 들어 다음과 같은 경우 소수점 한자리 값으로 동일하게 출력된다.


select 1.0 as num
union all
select 2 as num

 

출력결과

그런데 만약 연산이 들어간다면 어떻게 될까?

 

select 1.0 as num
union all
select floor(sum(200000.0) / 287) as num

 

출력결과

 

신기하게도 두번째 SELECT 의 결과값에 영향을 받는다.

이런 경우 소수점 값이 있다면 다른 SELECT문의 값도 같이 반올림되어 나타난다.

 

결론. 연산값이 있는 UNION ALL 의 경우 데이터형을 명시하도록 하자

 

select 1.0 as num
union all
select convert(decimal(18,1) ,floor(sum(200000.0) / 287)) as num

 

반응형