2014-04-17 22 views
0

MTEL有700萬行。 [TRANSACTION_AMT]列爲varchar,某些值爲數字,而某些值爲空格,一些爲'NA'。因爲我上[TRANSACTION_AMT]柱返回絕對值和,我已經使用以下查詢 -在計算絕對總和時將數據類型varchar轉換爲浮點時出錯

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浮動。

返回440萬條記錄後。

我可以在我的代碼中更改什麼以擺脫錯誤?我正在使用SQL Server。

回答

0

您在sum()之後正在執行數字邏輯。你需要做它sum()內:

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]; 

而且,你可能不希望在group bye.[ TRANSACTION_AMT]

我也簡化了邏輯,所以你只是增加了有效的數值。它將其他所有內容視爲0

+0

謝謝戈登偵探!向你致敬! –

相關問題