Я использую операторы 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
Так PRIN_DX_CD есть столбец в вопросе? пытались ли вы сделать бросок на столбе PRIN_DX_CD до десятичного знака, прежде чем сравнивать его значение? –
Вы правы PRIN_DX_CD - это колонка, о которой идет речь. Я не пытался использовать его в качестве десятичной цифры заранее. Я попробую это сейчас. Я просто немного смущен, так как таблица, в которую я вставляю значение, также устанавливается в varchar. –
Вы просто добавляете одиночные кавычки вокруг чисел в своем разделе IN? Он пытается сравнить varchar с числовым. –