2013-06-19 4 views
-1

Я использую операторы case для возврата 1,2,3,4 или 6 для заданного кода. Код в db хранится как (varchar(8),null), но по какой-то причине SQL делает это автоматически за кулисами или либо я его инструктировал, но я получаю сообщение об ошибке Преобразование типа данных varchar в числовое, и я не понимаю, почему. SQL Server 2008. Вот что я написал:Ошибка преобразования типа данных 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 для сравнения строк:

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

Хороший момент, вы можете сделать это по-другому! Я просто сделал это в столбце, исходя из предположения, что SELECT может оказаться там с более чем предопределенными значениями. –

Смежные вопросы