2015-08-19 37 views
0

當我插入以下到我的查詢我得到一個錯誤如何解決此數據類型錯誤?

,max(case when patins.rank = 1.0 then CLAIMS.[TOTALPAID] else '' end) 

TotalPaid是包含,例如現場:445.45

我收到的消息是:

錯誤轉換數據類型爲varchar到數字

,但是,這種情況下,語句的工作:

,max(case when patins.rank = 1.0 then INSCOMP.ORG else '' end) 

Inscomp.Org只是給保險公司。

+0

什麼是數據類型TOTALPAID列? – dcp1986

+0

,max(patins.rank = 1.0的情況下,然後CLAIMS。[TOTALPAID] else 0 end) – Helio

回答

1

問題:

字段TOTALPAID是數字。 Case語句可以返回的值,其值爲數據類型。如果滿足條件,則試圖返回數字值,否則返回varchar值。那就是問題所在。

解決方案:

  1. 你可以施放場相匹配,如果你願意,你可以返回NULL其他

    max(case when patins.rank = 1.0 then CAST(CLAIMS.[TOTALPAID] as varchar(max)) else '' end) 
    
  2. 的類型。不會有任何問題。

    max(case when patins.rank = 1.0 then CLAIMS.[TOTALPAID] else NULL end) 
    
  3. 或者只是刪除了 「其他」 部分

    max(case when patins.rank = 1.0 then CLAIMS.[TOTALPAID] end) 
    

    如果條件不滿足,它會返回NULL。

+0

很容易...謝謝 –

+0

@JasonClark:很高興我能幫忙,我的朋友 –

1

case表達式的所有分支必須返回相同的數據類型。所以你不能讓它們中的一個返回totalpaid,這是一個數字列,另一個返回'',它是一個字符串文字。相反,你可以返回一個實際null

max(case when patins.rank = 1.0 then CLAIMS.[TOTALPAID] else null end) 

實際上,因爲case表達式的默認返回值是null無論如何,你可能只是省略else條款:

max(case when patins.rank = 1.0 then CLAIMS.[TOTALPAID] end)