表“WORK_ORDER”有一个字段“USER_7”,该字段的类型为 varchar(80)。它存储数字。
这样做的问题是不会使用正确的值类型修改表。我必须对这些进行查询。
我想添加 USER_7 字段,为此我必须将其转换为数字类型。如果由于 X 或 Y 原因未给出转换,则异常会在错误行中抛出零,但最后它会将整个过滤列相加......可以转换的数字和行中的零无法转换。
SELECT CASE WHEN ISNUMERIC(USER_7) = 1 THEN SUM(cast(USER_7 as decimal(28, 20))) else 0 end DESPERDICIO
FROM [SHALER].[dbo].[WORK_ORDER]
where BASE_ID IN (
'OP-00001-16',
'OP-00007-16',
'OP-00016-16',
'OP-00020-16',
'OP-00025-16',
'OP-00030-16',
'OP-00036-16',
'OP-00040-16',
'OP-00044-16',
'OP-00047-16',
'OP-00047-16',
'OP-00049-16',
'OP-00050-16',
'OP-00055-16',
'OP-00059-16',
'OP-00061-16',
'OP-00067-16',
'OP-00069-16',
'OP-00074-16',
'OP-00075-16',
'OP-00076-16'
)
您的表达式
CASE
必须在聚合函数内SUM
: