2013-06-19 2 views
-1

주어진 코드에 대해 1,2,3,4 또는 6을 반환하기 위해 case 문을 사용하고 있습니다. db의 코드는 (varchar(8),null)으로 저장되지만 어떤 이유로 SQL이 자동으로 장면 뒤에서 또는 내가 지시 한대로 수행하고 있지만 오류가 발생하여 Data type varchar를 숫자로 변환하는 중 오류가 발생하고 이유를 이해하지 못합니다.데이터 형식 varchar를 숫자로 변환하는 중 오류가 발생했습니다.

DECLARE @CM TABLE (
ENCOUNTER_ID VARCHAR(200) 
, [MRN CM] VARCHAR(200) 
, NAME VARCHAR(500) 
, [CC GRP ONE SCORE] VARCHAR(2) 
--, [CC GRP TWO SCORE] VARCHAR(20) 
--, [CC GRP THREE SCORE] VARCHAR(20) 
--, [CC GRP FOUR SCORE] VARCHAR(20) 
--, [CC GRP FIVE SCORE] VARCHAR(20) 
--, [CC LACE SCORE] VARCHAR(20) 
) 
--##################################################################### 

INSERT INTO @CM 
SELECT 
C.PT_NO 
, C.MED_REC_NO 
, C.PT_NAME 
, C.PRIN_DX_CD_1 
--, C.PRIN_DX_CD_2 
--, C.PRIN_DX_CD_3 
--, C.PRIN_DX_CD_4 
--, C.PRIN_DX_CD_5 
--, C.CC_LACE_SCORE 

FROM (
    SELECT PT_NO 
    , MED_REC_NO 
    , PT_NAME 
    , CASE 
     WHEN PRIN_DX_CD IN (
     443.9, 440.20 
     ) 
     THEN CAST(1 AS VARCHAR(2)) 
     END AS PRIN_DX_CD_1 

    FROM SMSDSS.BMH_PLM_PTACCT_V 
    )C 
+0

그래서 PRIN_DX_CD 문제의 열입니다? 그것을 비교하기 전에 십진수로 PRIN_DX_CD 컬럼에 대한 캐스트를 시도 했습니까? –

+0

문제가되는 열은 PRIN_DX_CD입니다. 나는 그것을 십진수로 미리 캐스팅하지 않았다. 나는 그것을 지금 시도 할 것이다. 나는 값을 삽입 할 테이블이 varchar에서도 설정되기 때문에 조금 혼란 스럽다. –

+1

IN 절의 숫자 주위에 작은 따옴표를 추가하기 만하면됩니까? varchar와 숫자를 비교하려고합니다. –

답변

1

을 그것이 VARCHAR 필드의 경우, 문자열 비교에 대한 귀하의 IN 기준을 변경 : 여기에 SQL 서버 2008은 내가 쓴 것입니다

WHEN PRIN_DX_CD IN (
    '443.9', '440.20' 
    ) 
+1

좋은 점, 당신은 다른 방법으로 그것을 할 수 있습니다! SELECT에서 미리 정의 된 값 이상으로 끝날 수 있다는 가정하에 열에서 방금했습니다. –

관련 문제