Sql 计算绝对和时将数据类型varchar转换为浮点时出错
表Sql 计算绝对和时将数据类型varchar转换为浮点时出错,sql,sql-server,group-by,sum,na,Sql,Sql Server,Group By,Sum,Na,表MTEL有700万行[TRANSACTION\u AMT]列是varchar,有些值是数字,有些值是空格,有些是'NA'。由于我在[TRANSACTION\u AMT]列返回绝对和,所以我使用了以下查询- select e.[ ACCOUNT_NUM] as acct_num ,'MTL' as src ,case when isnumeric([TRANSACTION_AMT]) = 1 then SUM(ABS([TRANSACTION_AMT
MTEL
有700万行[TRANSACTION\u AMT]
列是varchar
,有些值是数字,有些值是空格,有些是'NA'
。由于我在[TRANSACTION\u AMT]
列返回绝对和,所以我使用了以下查询-
select
e.[ ACCOUNT_NUM] as acct_num
,'MTL' as src
,case
when isnumeric([TRANSACTION_AMT]) = 1 then SUM(ABS([TRANSACTION_AMT]))
when [TRANSACTION_AMT] = 'NA' then SUM(ABS(REPLACE([TRANSACTION_AMT],'NA','0')))
when [TRANSACTION_AMT] = '' then SUM(ABS(REPLACE([TRANSACTION_AMT], '', '0')))
end as abs_total_txn_amt
from
mtb..MTEL e (nolock)
group by
e.[ACCOUNT_NUM], e.[TRANSACTION_AMT]
上面的查询抛出一个错误
将数据类型varchar转换为float时出错
在返回440万条记录之后
我可以在代码中更改什么来消除错误?我使用的是SQL Server。您在
sum()之后执行数字逻辑。
。您需要在sum()中执行此操作。
:
而且,您可能不希望e.[TRANSACTION\u AMT]
在分组中
我还简化了逻辑,因此您只需添加有效的数值。它把其他一切都当作0
谢谢你,戈登侦探!向你致敬!
select e.[ ACCOUNT_NUM] as acct_num, 'MTL' as src
sum(case when isnumeric([ TRANSACTION_AMT]) = 1 then ABS([ TRANSACTION_AMT])
else 0
end) as abs_total_txn_amt
from mtb..MTEL e (nolock)
group by e.[ ACCOUNT_NUM];