다음 시나리오를 사용하는 스크립트가 있습니다.SQL Server - 사례 식 및 숫자 서식
이상한 일은 SQL이 모든 결과를 10 진수 18,1로 변환한다는 것입니다. 심지어 int로 캐스팅되어야하는 metricid 1 레코드.
SELECT CASE
WHEN metricid = 1 then cast(result as int)
WHEN metricid = 2 then cast(result as decimal(18,1)
END as column1
from sometable
것은 난 평가해서는 안 두 번째 조건으로 다음과 같은 것을 추가 1 않기 때문에하지 = 3 (오른쪽?)하지만 여전히 소수에 대한 모든 결과 변환 :
WHEN 1=3 and metricid = 2 then cast(result as decimal(18,1)
을 나는 SQL을 .... :(
에만 열 당 하나의 데이터 타입을 가질 수 있습니다. 'column1'은 하나의 열입니다. – Blorgbeard
이상한 점이 없다. 하나의 열은 하나의 데이터 유형 만 가질 수있다. – Lamak
* 문의 *와 * 표현 * 사이의 차이점을 이해하면 도움이 될 것이다. 당신이 사용하는 것은'CASE' * 표현식 *입니다. 모든 표현식과 마찬가지로 하나의 값 (행당)을 반환합니다. –