Select SQL中的数据转换错误,不确定它可能引用的字段

Select SQL中的数据转换错误,不确定它可能引用的字段,select,null,ssms,case-when,Select,Null,Ssms,Case When,Msg 8114,级别16,状态5,第1行将数据类型varchar转换为数字时出错 下面是我正在使用的代码和代码中提到的字段的模式。这背后有一些背景,我有一系列的代码。下面我只给出一个,但总共有350个。当我按indcode、area和所有权查询时,很可能数据不存在。因此,我为什么使用isnull语言。最后,我需要包含suppress=1值的行显示为N/a 对于我查询的每个indcode,我都需要一个结果。结果可能是实际数据或某些文本(NULL、N/A等) 最后是预期结果。我只给出了一个indc

Msg 8114,级别16,状态5,第1行将数据类型varchar转换为数字时出错

下面是我正在使用的代码和代码中提到的字段的模式。这背后有一些背景,我有一系列的代码。下面我只给出一个,但总共有350个。当我按indcode、area和所有权查询时,很可能数据不存在。因此,我为什么使用isnull语言。最后,我需要包含suppress=1值的行显示为N/a

对于我查询的每个indcode,我都需要一个结果。结果可能是实际数据或某些文本(NULL、N/A等)

最后是预期结果。我只给出了一个indcode的代码,但包含了六个代码,以使示例更深入

select
CASE
WHEN suppress = 0 then isnull (mnth1emp, 0)
ELSE 'N/A'
END as mnth1emp,
CASE 
WHEN suppress = 0 THEN isnull (mnth2emp, 0)
ELSE 'N/A'
END as mnth2emp,
CASE
WHEN suppress = 0 THEN isnull (mnth3emp, 0)
ELSE 'N/A'
END as mnth3emp
from dbo.industryimport20172f
where area='000003' and indcode='21' and ownership='00' 

suppress char (1)
mnth1emp   numeric(9,0)
mnth2emp   numeric(9,0)
mnth3emp   numeric(9,0)
area       char(6)
indcode   char (6)
ownership  char(2)

123    456    789
  1      2      3
Null   null   null
  2      3      4
  3      4      5
Null    Null   Null

因此,首先跳出来的是:

a) 当您要求在case语句中返回数字时,当您转到ELSE时,您需要一个字符串。尝试将所有字段强制转换为varchar,然后将其作为字符串输入:

CASE
WHEN cast(suppress as varchar) = '0' then isnull (cast(mnth1emp as varchar), '0')
ELSE 'N/A'
END as mnth1e
您可能不需要强制转换“抑制”

b) Suppress里面除了数字以外还有别的东西吗?如果是这样,则需要将零作为字符串:

CASE WHEN supress = '0' --etc.